2017-10-22 6 views
0

CMake를 사용하여 Xcode 프로젝트를 생성하고 CUDA 라이브러리를 빌드하려고합니다. 다음과 같이 내가 & 건물 CUDA 라이브러리 "caffe2_cpp_gpu"를 수집하기 위해 사용되는 코드는 다음과 같습니다 유닉스 메이크 파일을 사용하는 경우이 코드가 실행될 수 있습니다Xcode 및 CMake를 사용하여 CUDA 라이브러리 빌드

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() 

하는 것으로. 그러나 Xcode를 사용하면 실행할 수 없습니다.
프로젝트에 파일이 없음을 나타냅니다. missing file
그리고 "caffe2_cpp_gpu"CUDA 라이브러리를 만들 수 없습니다.

누구든지 해결 방법을 알고 있습니까?

답변

1

대답을 찾았습니다 ... 다른 종류의 파일 (.cc, .h 등)을 CUDA 라이브러리에 추가하면 작동합니다. XCode가 단일 .cu 파일을 정적 라이브러리 (.a)로 빌드 할 수없는 것 같습니다. 그래서 여기
내가 무슨 짓을 : CPU와 GPU를위한 별도로

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}) 

대신 건물 라이브러리입니다. 나는 그들을 하나의 라이브러리 파일에 병합한다.