我使用CMake在C中编码,我想在单独的文件中定义sobre预处理器宏。这样做的目的是为我的应用程序提供一个主配置文件。
我正在尝试做类似于内核.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
在编译时将每一行用作预处理器宏。
非常感谢您的帮助。
答案 0 :(得分:0)
我至少看到三种可能性:
以普通头文件的样式编写配置文件并包含它,即
#define CONFIG_MACRO_A y
#define CONFIG_MACRO_B y
//#define CONFIG_MACRO_C # C is not set
#define CONFIG_MACRO_D y
使用配置文件机制为@ usr1234567建议。
在编译器调用中使用shell处理(例如,在makefile
中),例如对于bash:
gcc $(CFLAGS) `while read mac; do echo -n "-D$mac "; done < <( grep -v "#" mymacro ) ` $(TARGET)