为每个记录的 *.c 文件添加一个特定的头文件

Prepend a particular header file to each documented *.c file

所以我有一个小项目,一堆*.c、*.h 文件。配置文件中有许多#define 语句形式的编译时开关,enable/disable 特定功能。所以文件 settings.h 可能包含

#define ENABLE_THIS_FEATURE  1
#define ENABLE_THAT_FEATURE  0
#define THAT_BUFFER_SIZE   128

现在的诀窍是,每个编译单元都不会明确 #include 设置文件。相反,它是用 gcc 的 -imacros 开关添加到每个编译之前的,比如 gcc -imacros settings.h -o module.o module.c.

现在我希望设置文件也有前缀 运行 源上的 doxygen,以便它为启用的功能生成文档。尽管该文件本身被 Doxygen 正常处理(它只是源代码树中的另一个文件),但其中的宏定义不会生效;看起来,每个文件都是单独评估的(这当然是明智之举)。

一个可接受的替代方法是在命令行上提供每个定义,例如 gcc 的 -D 开关。明确地 #including 每个编译单元中的设置文件不是一个选项(否则我不会求助于特定于 gcc 的 -imacros 方法)。

此处感兴趣的配置指令是 PREDEFINED

PREDEFINED += ENABLE_THIS_FEATURE=1
PREDEFINED += ENABLE_THAT_FEATURE=0
PREDEFINED += THAT_BUFFER_SIZE=128

现在可以使用一些脚本 foo 从有问题的头文件中生成。 (Doxygen 可以从标准输入读取它的配置文件。) 没那么难,一旦你知道了。 ;-)

提示:请确保您INCLUDE_PATH的内容正确。