在.config文件中定义预处理器宏

时间:2016-07-20 05:52:35

标签: c gcc macros cmake

我使用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

在编译时将每一行用作预处理器宏。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我至少看到三种可能性:

  1. 以普通头文件的样式编写配置文件并包含它,即

    #define CONFIG_MACRO_A y
    #define CONFIG_MACRO_B y
    //#define CONFIG_MACRO_C # C is not set
    #define CONFIG_MACRO_D y
    
  2. 使用配置文件机制为@ usr1234567建议。

  3. 在编译器调用中使用shell处理(例如,在makefile中),例如对于bash:

    gcc $(CFLAGS) `while read mac;  do echo -n "-D$mac "; done < <( grep -v "#" mymacro ) ` $(TARGET)