#cmake
#cmake
Вопрос:
Я знаю, название может показаться странным, но, пожалуйста, читайте дальше.
Я разрабатываю программное обеспечение на C , основанное на библиотеке заголовков, которое может быть скомпилировано для работы как на x64, так и на CUDA.
В последние годы правильным способом сборки исходного файла в CUDA является использование специального языка CMake, CUDA
поэтому, если я хочу скомпилировать исполняемый файл на CUDA, я просто устанавливаю язык следующим образом:
set_property(SOURCE test.cpp PROPERTY LANGUAGE CUDA)
У меня есть модульные тесты, основанные на test.cpp
, которые впоследствии могут быть скомпилированы также на CUDA либо на x64.
Пока что для сборки тестов я запускаю CMake дважды — один раз для сборки версии x64 и другой (с другим флагом) для сборки версии CUDA.
Вопрос: есть ли какой-либо шанс собрать обе версии моего теста (т.е. x64 и CUDA), основанные на одних и тех же исходных файлах, за один запуск CMake? Я знаю, что заставляю один CMake создавать другие CMake в стиле superbuild, но это не то, о чем я прошу.
Комментарии:
1. Я предполагаю, что нет: с помощью cmake вы пишете одно описание сборки для сборки для нескольких платформ. При этом запуски для платформ независимы.
2. Вы можете создавать один и тот же исходный файл столько раз, сколько захотите. Просто назначьте уникальное целевое имя для созданного исполняемого файла. Но чтобы назначить разные свойства для одного исходного файла для разных целей, вам, вероятно, потребуется создать эти цели в разных каталогах. Так
set_property(SOURCE test.cpp PROPERTY LANGUAGE CUDA)
будет применяться только к целевому объекту, созданному в текущем каталоге.