CMake + Cuda: компиляция cpp-файлов в Cuda-режиме (--x=cu)
Предположим, у меня есть файл, назовем его foo.cpp
, моя цель-скомпилировать этот файл с помощью nvcc в cuda режим. Из командной строки Это можно легко сделать, вызвав:
nvcc --x=cu foo.cpp
то, с чем я борюсь, - это заставить CMake сделать то же самое. Оказывается, что команда CMake cuda_add_executable(foo foo.cpp)
будет фильтровать *.cpp-файлы и используйте C++-компилятор (вместо nvcc).
обратите внимание, что переименование всех файлов в *.cu не является опция, поскольку кодовая база должна также поддерживать сборки, отличные от cuda.
1 ответов
на исходный код FindCUDA я нашел возможность активировать компиляцию CUDA для конкретных не -.cu
файлы. Хотя, похоже, документация отсутствует (за пределами исходного кода).
вы можете установить компиляцию CUDA на уровне файла с
set_source_files_properties( foo.cpp PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ )
на CMAKE 3.3 или позже.
остальное работает как обычно:
cuda_add_executable(foo foo.cpp)
на самом деле, я ожидал, что должно быть простое решение, такое как использование CUDA_NVCC_FLAGS
или cuda_add_executable( ... OPTIONS --x=cu )
передать --x=cu
флаг. К сожалению, это не работает. Причина, вероятно, в том, что область для настройки на этом уровне не будет полезна, поскольку это повлияет на все файлы.