2017-10-22 18 views
0

CMakeを使ってXcodeプロジェクトを生成し、CUDAライブラリを構築しようとしています。 UnixののMakefileを使用している場合は、このコードを実行することができることをXcodeとCMakeを使用してCUDAライブラリを構築する

list(APPEND CUDA_NVCC_FLAGS "-std=c++11" "-Wno-deprecated-gpu-targets")  
file(GLOB CUDA_SOURCES "${PROJECT_SOURCE_DIR}/source/caffe2/operator/*.cu") 
    cuda_add_library(caffe2_cpp_gpu STATIC ${CUDA_SOURCES}) 
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang++" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") 
    list(APPEND ALL_LIBRARIES -Wl,-force_load caffe2_cpp_gpu) 
else() 
    list(APPEND ALL_LIBRARIES -Wl,--whole-archive caffe2_cpp_gpu -Wl,--no-whole-archive) 
endif() 

注:次のように 私は&建物CUDAライブラリ「caffe2_cpp_gpu」を収集するために使用されるコードです。 Xcodeを使用すると実行できません。
プロジェクトでは、ファイルが見つからないことを示しています。 missing file
CUDAライブラリ "caffe2_cpp_gpu"は作成できません。

誰でも解決方法を知っていますか?

答えて

1

私は答えを見つけました... CUDAライブラリに別の種類のファイル(.cc、.hなど)を追加すると動作します。 XCodeは静的ライブラリ(.a)に単一の.cuファイルを構築できないようです。だからここ
は私がやったことです:代わりにCPUとGPUのために個別にライブラリを構築する

file(GLOB All_SOURCE "${PROJECT_SOURCE_DIR}/source/caffe2/operator/*.cu" "${PROJECT_SOURCE_DIR}/source/caffe2/operator/*.cc" "${PROJECT_SOURCE_DIR}/source/caffe2/operator/*.h") 
cuda_add_library(caffe2_lib ${All_SOURCE}) 

。私はそれらを1つのライブラリファイルにマージします。

関連する問題