Сборка библиотеки CUDA с использованием Xcode и CMake не удалась

Я пытаюсь использовать 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» не может быть создана.

Кто-нибудь знает как это решить?

0

Решение

Я нашел ответ …
Если я добавлю другой тип файла (.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. Я объединяю их в один файл библиотеки.

1

Другие решения

Других решений пока нет …