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 флаг. К сожалению, это не работает. Причина, вероятно, в том, что область для настройки на этом уровне не будет полезна, поскольку это повлияет на все файлы.