Извините, что беспокою вас, ребята, но я немного схожу с ума и не нашел ничего действительно подходящего в старых темах. Я хотел бы использовать первый аргумент команды make в качестве значения переменной внутри файла makefile, чтобы вместо выполнения
сделать var=arg1
я могу сделать
сделать аргумент1
а внутри make-файла переменная будет TARGET=arg1. Причина проста. Внутри моего make-файла мне нужно использовать его как
$(TARGET): $(OBJS) @echo -e "\n\n\t\t*** Compiled $(TARGET) successfully! ***\n" ; $(FL) $(LFLAGS) -o $(BUILDS_DIR)[email protected] \ $(OBJS) \ $(LIBS) @echo -e "\n\n\t\t*** Linking $(TARGET) completed! ***\n"
Кроме того (если это возможно), в случае отсутствия первого аргумента переменная TARGET должна быть установлена значением по умолчанию. это реально возможно?
Благодарность
Вы используете GNU make или какую-то другую реализацию make? — person Stefano schedule 20.10.2015
да GNU сделать. я забыл сказать это — person Stefano schedule 20.10.2015
Вы можете получить список всех целей командной строки из
$(MAKECMDGOALS)
, который представляет собой список всех целей, указанных в командной строке (хотя вы не должны делать предположение, что существует только одна из них…).В качестве альтернативы вы можете использовать
%
следующим образом:Обратите внимание, что это шаблонное правило с максимально длинной основой, поэтому оно будет выполняться только в том случае, если нет другого правила для обслуживания цели командной строки (если нет другого правила %:, в этом случае оно будет выполнять только первый). Если вы создадите несколько целей, это будет выполнено один раз для каждой цели.
кажется, он работает с $(MAKECMDGOALS). Большое спасибо и извините за поздний ответ (проблема с часовым поясом). насчет второго варианта, я тоже об этом думал, но мне нужно было установить переменную TARGET, а я не знал, как с этим поступить. — person Stefano; 21.10.2015