私はライブラリをビルドするプロジェクトを持っており、それにいくつかのcudaサポートを追加したいと思います。CMake:既存のプロジェクトにcudaを追加する方法
構造は次のとおりです。
| BASEDIR
|
_subdir1 | _subdir2
CMakeLists.txtファイルの基本構造:(subdir2は重要ではありません)。 BASEDIRで
:subdir1で
cmake_minimum_required(VERSION 2.6)
PROJECT(myproject)
find_package(CUDA)
INCLUDE_DIRECTORIES(${MYPROJECT_SOURCE_DIR})
ADD_SUBDIRECTORY(subdir1)
ADD_SUBDIRECTORY(subdir2)
:
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-filesを含めるにはCUDA_ADD_EXECUTABLE()を追加する必要がありますか?どうすれば他のファイルにリンクできますか?
私はsubdir1にCMakeLists.txtに次を追加してみました:
CUDA_ADD_EXECUTABLE(cuda file2.cu OPTIONS -arch sm_20)
ファイルをコンパイルするが、実行可能CUDAを構築すること。それをmylibにどのようにリンクさせるのですか? だけで?:
TARGET_LINK_LIBRARIES(cuda mylib)
私はcmakeの中で経験していないよということを認めざるを得ないが、私はあなたがそれを考え出したと思います。
ありがとうございました!完璧に動作します。 – nanosto