为了解决我正在开发的工具所面临的各种问题,我希望能够生成所有C文件的预处理版本 (*.c
)在给定项目中,尤其是删除宏,但也包含其他一些细节。我知道对于单个文件可以使用gcc -E
或cpp
进行预处理,但是当出现复杂的依赖关系和包含时,就像在大型项目中一样,单个预处理是无用的或完全不实用的。
现在,当然,这些项目通常也会有一些规范来以高效的方式编译整个项目,例如Makefile或配置文件。因此,我的问题是:我需要在那里修改(或者至少要查看)在项目中仅为每个C文件生成预处理的C文件,而不是制作项目
你可以假设它是一个带有C文件的开源项目,但是(不感兴趣)其他编程语言编写的其他文件也可以存在。
答案 0 :(得分:1)
这是一个简单的make
规则,用于从.cpp
个文件生成预处理的输出文件。
%.i: %.cpp
g++ -E -o $@ $?
如果您有file.cpp
,则可以使用
file.i
make file.i
您可以设置类似的规则,以便从.i
个文件生成.c
个文件。
%.i: %.c
gcc -E -o $@ $?
如果修改了.cpp
文件或.c
文件,则可以通过运行.i
重新生成make
个文件。