CMake автоматически распознает новые расширения файлов - PullRequest
3 голосов
/ 12 января 2011

Когда я добавляю исходные файлы к цели, они автоматически распознаются, если они принадлежат расширениям файлов C / C ++. Что я хочу сделать, так это то, что если я добавлю в исходники xxx.foo, все файлы .foo будут обработаны с помощью предопределенного набора команд компилятора.

Я знаю, что нужно использовать add_custom_command, но все примеры, которые я видел, используют фиксированные имена файлов, подобные тем, которые используются здесь http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_generate_a_source_file_during_the_build.3F

Есть идеи о правильном подходе к проблеме?

1 Ответ

2 голосов
/ 03 февраля 2011

Одним из способов решения этой проблемы является замена простых команд CMake add_executable и add_library на функции-оболочки или макросы, которые выполняют специальную обработку файлов с расширением .foo и передают остальные аргументы и параметры стандартные команды add_executable или add_library. E.g.:

set (FOO_SRCS "main.cpp" "module.cpp" "xxx.foo" "yyy.foo")
foo_add_executable(fooexec ${FOO_SRCS})
foo_add_library(foolib ${FOO_SRCS})

Стандартный модуль CMake FindCUDA использует этот подход. Он добавляет команды CUDA_ADD_EXECUTABLE и CUDA_ADD_LIBRARY, которые подают исходные файлы с расширением .cu в компилятор NVIDIA C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...