【问题标题】:Define preprocessor macros in a .config file在 .config 文件中定义预处理器宏
【发布时间】:2016-07-20 05:52:34
【问题描述】:

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

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

非常感谢您的帮助。

【问题讨论】:

标签: c gcc macros cmake


【解决方案1】:

我看到至少三种可能性:

  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)
    

【讨论】:

  • 谢谢!对于我的用例,第三个选项可以解决问题。主要目的是使配置文件“可读”,所以我想避免使用 #define 或 #cmakedefine 。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2010-10-17
  • 2021-12-29
  • 1970-01-01
  • 2012-12-29
相关资源
最近更新 更多