我有一个构建库的项目,我想为其添加一些 cuda 支持。
结构是:
|基础目录
|_subdir1
|_subdir2
CMakeLists.txt 文件的基本结构:(subdir2 不重要)。
在基迪尔:
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-support 放入其中。我想用 file2.cu 替换 file2.cpp 并且我做到了,但它没有构建 .cu 文件,只有 cpp 文件。
我是否必须添加 CUDA_ADD_EXECUTABLE() 才能包含任何 cuda 文件?然后我将如何将其链接到其他文件?
我尝试将以下内容添加到 subdir1 中的 CMakeLists.txt 中:
CUDA_ADD_EXECUTABLE(cuda file2.cu OPTIONS -arch sm_20)
这将编译文件但构建一个可执行的 cuda。如何将其链接到 mylib?只是?:
TARGET_LINK_LIBRARIES(cuda mylib)
我不得不承认我在 cmake 方面没有经验,但我猜你想通了。