【问题标题】:How can a macro definition be passed as an argument to make?如何将宏定义作为参数传递给 make?
【发布时间】:2017-01-14 16:44:36
【问题描述】:

我希望通过将 C 宏作为参数传递给从命令行调用的 make 来定义一个 C 宏。

Background: I want the directive #define ENABLE_OPT 1 to be included in my C source code when a certain build option is chosen.因此,我希望通过make 命令行来完成此操作,而不是修改源代码 makefile。

如何做到这一点?我发现make -DENABLE_OPT=1 -f Makefile 抛出错误,“E”、“N”等是无效的参数。

【问题讨论】:

  • 制作 CFLAGS="-DENABLE_OPT=1"
  • 谢谢。我在 makefile 中只定义了 LOCAL_CFLAGS,所以这不会覆盖任何东西。听起来不错!
  • 即使之前定义了CFLAGS,也可以使用CFLAGS+=将宏添加到CFLAGS中

标签: c makefile macros gnu-make


【解决方案1】:

您可以使用--eval,它将字符串评估为生成文件语句:

make --eval="FLAGS+= -D ENABLE_OPT=1"

然后使用 make 变量 FLAGS 作为编译器参数来编译代码。

【讨论】:

    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 2021-09-20
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2018-05-16
    相关资源
    最近更新 更多