我应该修改什么才能预处理整个项目中的所有C文件?

Ped*_*ers 5 c makefile cmake c-preprocessor

为了解决我正在开发的工具所面临的各种问题,我希望能够在给定项目中生成所有C文件(*.c)的预处理版本,尤其是删除宏,还可以用于其他一些细节.我知道预处理可以使用任何一个文件gcc -E或cpp单个文件来完成,但是当出现复杂的依赖关系和包含时,就像在大型项目中一样,单个预处理是无用的或完全不实用的.

当然,现在,这些项目通常也会有一些规范来以有效的方式编译整个项目,例如Makefile或配置文件.因此,我的问题是:我究竟需要在那里进行修改(或者至少要查看),只为项目中的每个C文件生成预处理的C文件而不是制作项目?

您可以假设它是一个带有C文件的开源项目,但是(不感兴趣)其他编程语言编写的其他文件也可以存在.

R S*_*ahu 1

make这是从文件生成预处理输出文件的简单规则.cpp。

%.i: %.cpp
    g++ -E -o $@ $?
Run Code Online (Sandbox Code Playgroud)

如果有file.cpp,您可以file.i使用以下方式生成:

make file.i
Run Code Online (Sandbox Code Playgroud)

您可以设置类似的规则来.i从.c文件生成文件。

%.i: %.c
    gcc -E -o $@ $?
Run Code Online (Sandbox Code Playgroud)

如果.cpp文件或.c文件被修改,.i可以通过运行重新生成文件make。