【发布时间】:2012-07-08 12:54:33
【问题描述】:
我最初在CMake 邮件列表中问过这个问题:How to configure target or command to preprocess C file?
我正在将基于 GNU Autotools 的构建配置移植到 CMake,我必须处理 C 预处理以生成文件。
预处理器的输入是 SQL 文件,其中使用了 C 预处理器 指令,例如 #include "another.sql" 等。
目前,Makefile 使用以下规则生成纯 SQL 文件作为输出:
myfile.sql: myfile.sql.in.c
cpp -I../common $< | grep -v '^#' > $@
因此,myfile.sql 是构建过程的产品之一,类似于共享库或可执行文件。
我应该使用什么 CMake 工具来达到同样的效果?
我不清楚我应该使用add_custom_command、add_custom_target 还是两者兼而有之。
显然,我正在寻找一种至少可以与 GNU GCC 和 Visual Studio 工具集一起使用的可移植解决方案。我想我必须定义特定于平台的自定义命令,一个用于cpp 预处理器,一个用于cl.exe /P。
或者,CMake 是否为 C 预处理器提供任何类型的抽象?
我扫描了档案,但我只发现了基于 make 功能的 fortran 文件或解决方案的预处理:make myfile.i
所以,这不是我想要的。
更新:Added answer 基于 CMake 邮件列表中的 solution received from Petr Kmoch。
【问题讨论】:
标签: sql cmake c-preprocessor