【问题标题】:Make command line string variables制作命令行字符串变量
【发布时间】:2015-08-10 04:23:00
【问题描述】:

我想在 make 命令行中为 CC_FLAGS 定义值。

make - f makefile CC_FLAGS=-DVERSION='\"1.2.3\"'

可行,但如果想为 CC_FLAGS 定义多个值怎么办?

make -f makefile CC_FLAGS='-DVERSION='\"1.2.3\"' -DVERSION_1_2_3'

这不起作用。想法是有一个字符串告诉软件版本号以及#ifdef 用法的符号。

【问题讨论】:

  • 好点,但这是一个错字:D
  • 尝试 echo- 从 makefile 中输入 CC_FLAGS
  • 考虑在命令行使用-DVERSION=1.2.3,在内部使用#define STR_VERSION STRINGIFY(VERSION)#define STRINGIFY(x) #x。那么你就不必对引号大惊小怪了。

标签: c command-line makefile symbols


【解决方案1】:

你不需要额外的单引号里面你有的。这有效:

make -f makefile CC_FLAGS='-DVERSION=\"1.2.3\" -DVERSION_1_2_3'

如本程序所示

int main (void)
{
    printf ("Are we defined?\n");
#ifdef VERSION_1_2_3
    printf ("yeah we have a version.\n");
#endif

#ifdef VERSION
    printf ("version is: \"%s\"\n", VERSION);
#endif

    return 0;
}

【讨论】:

    【解决方案2】:

    您需要为您的 shell 使用正确的转义/引用。试试这个:

    make -f makefile CC_FLAGS='-DVERSION=\"1.2.3\" -DVERSION_1_2_3'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多