【问题标题】:Build CUDA library using Xcode and CMake fail使用 Xcode 和 CMake 构建 CUDA 库失败
【发布时间】:2017-10-22 12:26:31
【问题描述】:

我正在尝试使用 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”。

有人知道怎么解决吗?

【问题讨论】:

    标签: c++ xcode cmake cuda caffe2


    【解决方案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 分别构建库。我将它们合并到一个库文件中。

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多