簡體   English   中英

使用Xcode和CMake構建CUDA庫失敗

[英]Build CUDA library using Xcode and CMake fail

我正在嘗試使用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,則無法運行。
在項目中,它顯示文件丟失: 文件丟失
並且無法創建CUDA庫“ caffe2_cpp_gpu”。

有人知道如何解決嗎?

我找到了答案...如果我將另一種文件(.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分別構建庫。 我將它們合並到一個庫文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM