Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake自动识别新的文件扩展名_Cmake - Fatal编程技术网

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

CMake自动识别新的文件扩展名,cmake,Cmake,当我将源文件添加到目标文件时,如果它们来自C/C++文件扩展名,则会自动识别它们。我想实现的是,如果我将源代码xxx.foo放入其中,那么所有的.foo文件都将使用一组预定义的编译器命令进行处理 我知道方法是使用add_custom_命令,但我看到的所有示例都使用固定文件名,就像这里使用的文件名一样 关于解决问题的正确方法有什么想法吗?解决问题的一种方法是将普通的CMakeadd_executable和add_library命令替换为包装函数或宏,这些函数或宏对扩展名为.foo的文件进行特殊处理

当我将源文件添加到目标文件时,如果它们来自C/C++文件扩展名,则会自动识别它们。我想实现的是,如果我将源代码xxx.foo放入其中,那么所有的.foo文件都将使用一组预定义的编译器命令进行处理

我知道方法是使用add_custom_命令,但我看到的所有示例都使用固定文件名,就像这里使用的文件名一样


关于解决问题的正确方法有什么想法吗?

解决问题的一种方法是将普通的CMake
add_executable
add_library
命令替换为包装函数或宏,这些函数或宏对扩展名为.foo的文件进行特殊处理,并将其他参数和选项传递给标准的
add_可执行文件
add_库
命令。例如:

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模块采用这种方法。它添加了CUAADAADADIOxEngUTable和CUAADAADD库命令,这些命令将源文件与扩展名CU一起输入英伟达C编译器。