GNU帮助替换双冒号(::)

时间:2018-09-24 09:41:33

标签: makefile gnu-make gnu

我的任务是将与版本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专家。 有没有一种方法可以不使用双冒号语法来重写它?

谢谢

1 个答案:

答案 0 :(得分:1)

来自GNU make manual

  

当目标出现在多个规则中时,所有规则必须为同一类型:全部为普通或全部为双冒号。

在您的摘要中,目标同时显示双冒号和单冒号规则。这些双冒号规则不是规则,实际上,它们是target-specific variables,因此不应使用双冒号。只需将那些双冒号替换为单冒号即可。

相关问题