Одним из способов решения этой проблемы является замена простых команд 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.