【问题标题】:GNU make help for double-colon (::) replacementGNU 为双冒号 (::) 替换提供帮助
【发布时间】:2018-09-24 09:41:32
【问题描述】:

我的任务是将与 GNU Make 3.80 版本一起使用的旧的、自动生成的 makefile 移植到最新的 make 版本。

这个生成的makefile(最多几千行)广泛使用双冒号语法。 当我尝试使用较新的 make 时,makefile 不再起作用,我认为这是由于这种语法造成的。

这是它的使用方法

$(MY_OBJ_DIR)/my_file_core3.obj :: SRC_FILE=$(MY_SRC_DIR)/myfile.c
$(MY_OBJ_DIR)/my_file_core3.obj :: OUTPUT_FILE=$(MY_OBJ_DIR)/oc_declare_oct_param_core_A0_A_c3.obj
$(MY_OBJ_DIR)/my_file_core3 obj :: INC_FLAGS= -I$(INC_DIR) -I$(DIR_OCTANE_TARGET_INC_PRIVATE)
$(MY_OBJ_DIR)/my_file_core3.obj :: DEFINE_FLAGS=-Dcore3 -DTHE_FILENAME=\"myfile.c\"
$(MY_OBJ_DIR)/my_file_core3.obj :: CC_OPTIONS=$(CC_OPTIONS_o3)  $(CC_OPTIONS_dbg_off)
$(MY_OBJ_DIR)/my_file_core3.obj: $(MY_SRC_DIR)/myfile.c $(INC_DIR)/my_header.h $(DIR5)/another_header.h
   @echo "Command: Compile myfile.c for core3 with options o3, dbg_off"
   $(MY_CC)

我不是生成文件专家。 有没有办法在不使用双冒号语法的情况下重写它?

谢谢

【问题讨论】:

    标签: makefile gnu-make gnu


    【解决方案1】:

    来自GNU make manual

    当一个目标出现在多个规则中时,所有的规则必须是相同的类型:都是普通的,或者都是双冒号。

    在您的 sn-p 中,目标同时出现双冒号和单冒号规则。那些双冒号规则不是规则,实际上它们是target-specific variables,因此它们不应该使用双冒号。只需将那些双冒号替换为单个冒号即可。

    【讨论】:

    • 谢谢,我确实阅读了该规则,但没有看到 makefile 不遵守它。如果情况有所改善,我会尽快尝试您的建议并标记为已解决。这当然是一个很好的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2022-07-02
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多