我正在尝试使用CMake生成Xcode项目并使用它构建CUDA库。 我用来收集和编码的代码建立CUDA图书馆" caffe2_cpp_gpu"如下:
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()
请注意,如果使用Unix Makefile,则可以运行此代码。
但是如果使用Xcode则无法运行
在项目中,它显示缺少一个文件:
missing file
和CUDA库" caffe2_cpp_gpu"无法创建。
有谁知道如何解决它?
答案 0 :(得分:1)
我找到了答案...... 如果我将另一种文件(.cc,.h等)附加到CUDA库中,它将起作用。看起来XCode无法将单个.cu文件构建到静态库(.a)中 所以这就是我所做的:
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})
而不是单独为CPU和GPU构建库。我将它们合并到一个库文件中。