我正在使用 CMake 用 C 进行编码,我想在单独的文件中定义简单的预处理器宏。这样做的目的是为我的应用程序提供一个主配置文件。
我正在尝试做一些类似于内核 .config 文件的事情,但我没有找到如何将带有定义的文件传递给编译器。我知道 gcc 的选项 -D 可以定义单个宏,但它不接受文件作为输入。我也知道 CMake 的 ADD_DEFINITIONS 实用程序,但它的用法但也预计与一定数量的宏一起使用,而不是与文件一起使用。
总结一下,我想定义一个带有宏定义的文件.config:
CONFIG_MACRO_A=y
CONFIG_MACRO_B=y
# CONFIG_MACRO_C is not set
CONFIG_MACRO_C=y
并在编译时将每一行用作预处理器宏。
非常感谢您的帮助。
最佳答案
我至少看到三种可能性:
以普通头文件的风格编写配置文件并包含它,即
#define CONFIG_MACRO_A y #define CONFIG_MACRO_B y //#define CONFIG_MACRO_C # C is not set #define CONFIG_MACRO_D y
按照 @usr1234567 建议使用配置文件机制。
在编译器调用中(即在
makefile
中)使用 shell 处理,例如对于bash:gcc $(CFLAGS) `while read mac; do echo -n "-D$mac "; done < <( grep -v "#" mymacro ) ` $(TARGET)
关于c - 在 .config 文件中定义预处理器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38473253/