CMake自动识别新的文件扩展名

时间:2011-01-12 17:27:13

标签: cmake

当我将源文件添加到目标时,如果它们来自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 个答案:

答案 0 :(得分:2)

解决问题的一种方法是用包装函数或宏替换普通的CMake add_executableadd_library命令,这些函数或宏对.foo扩展名的文件进行特殊处理,并传递其他参数和选项到标准add_executableadd_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})

FindCUDA标准CMake模块采用这种方法。它添加了CUDA_ADD_EXECUTABLE和CUDA_ADD_LIBRARY命令,这些命令将扩展名为.cu的源文件提供给NVIDIA C编译器。