代码之家  ›  专栏  ›  技术社区  ›  Oliver

强制gnu make重建受编译器定义影响的对象

  •  24
  • Oliver  · 技术社区  · 16 年前

    make OPTION_1=1
    

    它将根据该值向对象的子集添加额外的编译器定义。

    ifeq ($(OPTION_1), 1)
    CC_FLAGS += -DOPTION_1_ON
    endif
    

    定义中的更改会影响包含的头文件内容—存根或实现将暴露于对象文件。

    2 回复  |  直到 16 年前
        1
  •  46
  •   slowdog    15 年前

    我使用一个文件来记住这些选项的最后一个值,如下所示:

    .PHONY: force
    compiler_flags: force
        echo '$(CC_FLAGS)' | cmp -s - $@ || echo '$(CC_FLAGS)' > $@
    

    这个 cmp || echo compiler_flags 只有在设置更改时才会被触动,所以现在可以编写如下内容

    $(OBJECTS): compiler_flags
    

    重建 $(OBJECTS) $(对象) 仅当 编译器\u标志 文件实际上被修改了。