CMake: как добавить cuda в существующий проект
у меня есть проект, который строит библиотеку, и я хочу добавить к нему некоторую поддержку cuda.
структура:
|Basedir
|_subdir1
|_subdir2
основная структура CMakeLists.txt файлы: (subdir2 не важно).
в Basedir:
cmake_minimum_required(VERSION 2.6)
PROJECT(myproject)
find_package(CUDA)
INCLUDE_DIRECTORIES(${MYPROJECT_SOURCE_DIR})
ADD_SUBDIRECTORY(subdir1)
ADD_SUBDIRECTORY(subdir2)
в subdir1:
ADD_LIBRARY(mylib shared
file1.cpp
file2.cpp
file3.cpp
)
INSTALL(
TARGETS mylib
DESTINATION lib
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
FILE(GLOB_RECURSE HEADERS RELATIVE ${MYPROJECT_SOURCE_DIR}/myproject *.h)
FOREACH(HEADER ${HEADERS})
STRING(REGEX MATCH "(.*)[/]" DIR ${HEADER})
INSTALL(FILES ${HEADER} DESTINATION include/myproject/${DIR})
ENDFOREACH(HEADER)
Я на самом деле не знаю, как поместить в него поддержку cuda. Я хочу заменить file2.cpp с file2.cu и я сделали это, но он не построил .файл cu, только файлы cpp.
нужно ли добавлять CUDA_ADD_EXECUTABLE () для включения любых cuda-файлов? Как я тогда свяжу его с другими файлами?
Я попытался добавить следующее В CMakeLists.txt в subdir1:
CUDA_ADD_EXECUTABLE(cuda file2.cu OPTIONS -arch sm_20)
это скомпилирует файл, но построит исполняемый файл cuda. Как связать его с mylib? Только с?:
TARGET_LINK_LIBRARIES(cuda mylib)
Я должен признать, что у меня нет опыта в cmake, но я думаю, вы поняли что.
1 ответов
можно использовать CUDA_ADD_LIBRARY
на . Он работает как CUDA_ADD_EXECUTABLE
но для библиотек.
CUDA_ADD_LIBRARY(mylib SHARED
file1.cpp
file2.cu
file3.cpp
OPTIONS -arch sm_20
)
TARGET_LINK_LIBRARIES(mylib ${CUDA_LIBRARIES})