GNU делает помощь для замены двоеточия (: :) - PullRequest
0 голосов
/ 24 сентября 2018

Мне поручено перенести старый, автоматически сгенерированный make-файл, используемый с версией GNU Make 3.80, на последнюю версию make.

Этот сгенерированный make-файл (до нескольких тысяч строк) использует двойное двоеточиесинтаксис широко.Когда я попробовал новую версию, make-файл больше не работал, и я думаю, что это связано с этим синтаксисом.

Вот как он используется

$(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)

Я не эксперт по make-файлу,Есть ли способ переписать это без использования синтаксиса с двойным двоеточием?

Спасибо

1 Ответ

0 голосов
/ 24 сентября 2018

Из GNU make manual :

Когда цель появляется в нескольких правилах, все правила должны быть одного типа: все обычные или все двоеточия.

В вашем фрагменте цель появляется с правилами с двумя и двоеточиями.Эти правила двойного двоеточия не являются правилами, на самом деле они являются переменными, специфичными для цели , и, следовательно, они не должны использовать двойное двоеточие.Просто замените эти двойные двоеточия на одинарные.

...