#if-statement #makefile
#оператор if #makefile
Вопрос:
Итак, я вроде как новичок в makefiles, но у меня есть это правило в моем:
$(rc)/%.class: $(r)/%.java
echo $(strip $(findstring $*,"Robot RoboController"))
ifneq (,$(strip $(findstring $*,"Robot RoboController")))
echo "Robot or RoboController"
else
echo "other";
endif
Моя цель состоит в том, что если сопоставляемый текст является Robot или RoboController, то он компилируется одним способом, в противном случае он компилируется другим способом, к сожалению, когда я запускаю maks, я получаю следующий вывод:
$ make Classes/RobotSuite/robot/Robot.class
echo Robot
Robot
echo "other";
other
$ make Classes/RobotSuite/robot/RoboComm.class
echo
echo "other";
other
Похоже, что независимо от того, что я ввожу в ifneq
, оно ошибочно оценит его как равное нулевой строке. Кто-нибудь может объяснить, почему?
Я использую GNU Make v3.81, созданный для i686-pc-linux-gnu.
Комментарии:
1. Почему это помечено как «java»?
2. Упс. Неудачный выбор. На самом деле не обращал внимания.
3. Эй, есть ли какой-нибудь способ поднять этот поток, не будучи придурком по этому поводу?
4. Вы можете удалить вопрос и отправить его повторно. Это могло бы помочь, если бы вы объяснили, какую систему make вы используете.
5. Я могу опубликовать достойный ответ, если вы хотите. Почему вы хотите «запустить этот поток» (и что вы подразумеваете под этой фразой)?
Ответ №1:
Если вы используете GNU Make, не используйте ifneq
для решения этой проблемы, используйте целевые значения конкретных переменных.