[英]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.