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

标签 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

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

最佳答案

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

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 编译器。

关于CMake 自动识别新的文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671862/

相关文章:

c++ - Python 依赖,windows (CMake)

cmake - 你如何使用 CTEST_CUSTOM_PRE_TEST?

c++ - 使用不同的预处理器宏从同一源代码树构建多个目标

c++ - 从文件夹名称获取 makefile 参数

android - 使用 Android CMake build设置 ABI 目标

cmake - 当find_package找不到库时在cmake-gui中选择路径

cmake_minimum_required 和子项目

compiler-construction - 缺少变量 cmake_3_compiler kdevelop cmake

android - 如何安装 Android Studio 2.2 CMake 包/工具?

c++ - 如何不使用命令行参数编译 CMakeLists.txt 的部分内容?