我最初在CMake邮件列表上问了这个问题:如何配置目标或命令来预处理 C 文件?
我正在将基于GNU Autotools的构建配置移植到 CMake,我必须处理 C 预处理以生成文件。
预处理器的输入是使用了C 预处理器指令的SQL文件,例如等。#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
所以,这不是我想要的。