9
我有一個項目可以建立一個庫,我想爲它添加一些cuda支持。CMake:如何將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支持了進去。我想用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的經歷,但我猜你想通。
感謝您的簡單解決方案!完美的作品。 – nanosto