【问题标题】:makefile: passing preprocessor through makefile to g++makefile:通过makefile将预处理器传递给g ++
【发布时间】:2012-03-27 19:40:56
【问题描述】:

我看到以前的 SO 帖子 12 等。我想在编译时传递一个预处理器指令。使用 scons,我可以这样做:

num_times = ARGUMENTS.get('c', 1)
env.Append(CCFLAGS = '-DNUM_TIMES=%d' % int(num_times))

我希望,它也应该可以使用 make。我要发布

make c=4

或类似的东西。有人可以建议一种方法。我正在编译一个文件夹,其中包含带有自己的 makefile 的子文件夹。提前致谢。

【问题讨论】:

    标签: makefile


    【解决方案1】:

    一种简单的方法是:

    CFLAGS += -DNUM_TIMES=$(c)
    export CFLAGS
    
    all:
        $(MAKE) -C your_subfolder
    

    使用make c=2 调用,不要触摸子文件夹makefile 中的CFLAGS

    另一种方法是在您的根文件夹中有一个Makefile 部分,其中包含您在子目录makefiles 中include 的所有常用设置(带有include)。 ($(MAKE) 确保您提供给make 的命令行参数也将传递给子制作。)

    【讨论】:

    • 谢谢。可以吗,如果子生成文件这样做:CFLAGS += $(CXXFLAGS)
    • 只要确保你不在主 makefile 和子文件中做同样的事情,同时在主文件中导出 - 你会在你的变量中得到双倍的东西,这可能有问题。最好的是(可能)不是export,而是有一个通用的make sn-p,你可以在任何地方使用你想要的设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多