Как установить CMake CUDA_NVCC_FLAGS для файла .cu

#cuda #cmake

#cuda #cmake

Вопрос:

Я пытаюсь установить --device-debug флаг для одного исходного файла CUDA (.cu). Установка флага для всего проекта выполняется с помощью

 set(CUDA_NVCC_FLAGS_RELWITHDEBINFO "--device-debug;-lineinfo")
  

в главном CMakeLists.txt файл. Но у меня есть подпроект, который включен

 add_subdirectory (${PROJECT_SOURCE_DIR}/cuda)
  

Я пытался установить свойство как из основного, так и из подпроекта CMakeLists.txt файл, но это вообще не сработало. Он даже не будет перекомпилировать файл после добавления моих команд. Это команды, которые я пробовал:

 set_source_files_properties(test.cu PROPERTIES CUDA_NVCC_FLAGS_RELWITHDEBUGINFO "--device-debug;-lineinfo")
set_source_files_properties(ilm/test.cu PROPERTIES CUDA_NVCC_FLAGS_RELWITHDEBUGINFO "--device-debug;-lineinfo")
set_source_files_properties(cuda/ilm/test.cu PROPERTIES CUDA_NVCC_FLAGS_RELWITHDEBUGINFO "--device-debug;-lineinfo")
set_source_files_properties(${PROJECT_SOURCE_DIR}/cuda/ilm/test.cu PROPERTIES CUDA_NVCC_FLAGS_RELWITHDEBUGINFO "--device-debug;-lineinfo")
set_source_files_properties(${PROJECT_SOURCE_DIR}/cuda/ilm/test.cu PROPERTIES CUDA_NVCC_FLAGS "--device-debug;-lineinfo;${CUDA_NVCC_FLAGS}")
  

Возможно ли изменить желаемый флаг компилятора для одного файла .cu с помощью CMake?

Ответ №1:

 CUDA_COMPILE( generated_files file0 file1 ... [STATIC | SHARED | MODULE] [OPTIONS ...] )
  

генерирует список объектных файлов, которые будут использоваться с add_library или add_executable командами. Он вызывает CUDA_WRAP_SRCS под капотом и может присоединять дополнительные команды, которые будут даны nvcc . Вы можете скомпилировать каждый исходный файл отдельно с помощью CUDA_COMPILE команды и различных опций. Затем вы можете связать их со всем, что вам нужно.

Если вам нужна более подробная информация, пожалуйста, прочитайте FindCUDA.cmake