ライブラリを構築するプロジェクトがあり、cuda サポートを追加したいと考えています。
構造は次のとおりです。
|Basedir
|_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)
サブディレクトリ1:
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.cpp を file2.cu に置き換えたいのですが、それを実行しましたが、.cu ファイルはビルドされず、cpp ファイルのみがビルドされました。
cuda ファイルを含めるには CUDA_ADD_EXECUTABLE() を追加する必要がありますか? それを他のファイルにリンクするにはどうすればよいですか?
subdir1 の CMakeLists.txt に以下を追加してみました:
CUDA_ADD_EXECUTABLE(cuda file2.cu OPTIONS -arch sm_20)
これにより、ファイルはコンパイルされますが、実行可能な cuda がビルドされます。それを mylib にリンクするにはどうすればよいですか? だけで?:
TARGET_LINK_LIBRARIES(cuda mylib)
私はcmakeの経験がないことを認めなければなりませんが、あなたはそれを理解したと思います.