使用Xcode和CMake构建CUDA库失败

时间:2017-10-22 12:26:31

标签: c++ xcode cmake cuda caffe2

我正在尝试使用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"无法创建。

有谁知道如何解决它?

1 个答案:

答案 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构建库。我将它们合并到一个库文件中。