3

У меня есть вопрос, касающийся строки в Makefile. У меня есть цель "очистить" мой локально установленный тестовый / промежуточный сервер. В настоящее время это выглядит так:

clean:
    rm -rf $(LOCAL_SERVER_PATH)/*

Пока переменная LOCAL_SERVER_PATH определена и выглядит как /srv/www/htdocs или что-то в этом роде, все в порядке. Но ... что, если пользователь допустил ошибку и набрал неверное определение переменной, или какой-то шаг настройки стал румянным, и был создан Makefile с неверным определением.

По сути, я боюсь, что по ошибке я могу получить неопределенный $(LOCAL_SERVER_PATH) , и моя цель будет уступать:

clean:
    rm -rf /*

Можно ли реорганизовать мой Makefile, чтобы сделать его более устойчивым к таким ошибкам? Я не хочу в конечном итоге создать Makefile, который потенциально может уничтожить всю мою linux-инсталляцию (или даже ее часть, так как мой пользователь не «root»).

1 ответ1

3

Как уже отмечалось, проверьте переменную, чтобы убедиться, что она не пуста:

clean:
    test -n "$(LOCAL_SERVER_PATH)" && rm -rf $(LOCAL_SERVER_PATH)/*

Та же идиома встречается в большом количестве спецификаций RPM, где кажется, что переменная BUILD_ROOT , как известно, не установлена. Поскольку его замена не является общедоступной (несмотря на то, что некоторое время назад в Re: [Fedora-package] поэтапный отказ от buildroot?)Ее можно найти, ее все еще можно найти здесь и там.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .