У меня есть файл для make-файла, который имеет следующие правила:
$(OUT_DIR)/%.0: %.c
$(CC) $(CFLAGS) -c -o $@ $<
$(CC) $(CFLAGS) -E -P $< -o $(OUT_DIR)/$<.preproc
$(CC) $(CFLAGS) -E -dD $< -o $(OUT_DIR)/$<.macros
Прекрасно работает.Но для некоторых целей мне нужно только следующее:
$(OUT_DIR)/%.0: %.c
$(CC) $(CFLAGS) -c -o $@ $<
могу ли я сделать что-то подобное, используя предопределенную (или командную строку) переменную:
$(OUT_DIR)/%.0: %.c
$(CC) $(CFLAGS) -c -o $@ $<
ifeq ($(CIFLAG), 1)
$(CC) $(CFLAGS) -E -P $< -o $(OUT_DIR)/$<.preproc
$(CC) $(CFLAGS) -E -dD $< -o $(OUT_DIR)/$<.macros
endif
Я уверен, что яможет включать другой файл, основанный на значении CIFLAG, но надеялся, что смогу сделать это, изменив правило шаблона.
Есть идеи?
Спасибо!
Я сделал так, как предложил MadScientist (спасибо за образование), но не получил то, что хотел.Мой файл теперь выглядит как:
$(OUT_DIR)/%.0: %.c
$(CC) $(CFLAGS) -c -o $@ $<
[ $(CI_BUILD) -eq 0 ] \
|| {$(CC) $(CFLAGS) -E -P $< -o $(OUT_DIR)/$<.preproc \
&& $(CC) $(CFLAGS) -E -dD $< -o $(OUT_DIR)/$<.macros; }
Но, когда я выполняю, я получаю это (множество несоответствующих выходных данных обрезано):
cc -c -o test.o
[ 1 -eq 0 ] \
|| {cc -E -P test.c -o test.c.preproc \
&& cc -E -dD test.c -o test.c.macros; }
/bin/sh: -c: line 2: syntax error near unexpected token '}'
Является ли ';'проблема?