2014-10-20 5 views
2

Мы безуспешно пытаемся сделать VPATH или vpath поисковыми каталогами, содержащими пробельные символы.gnu make пробелы в именах каталогов vpath

Мой Makefile содержит:

vpath %cpp RTW/ModelRTW RTW/StandardTests RTW/TestFramework RTW/TestFromFile ../../../CommonCode ../04_Model/DLib/ ../04 Model/ELib/ 

make -p возвращается:

. 
. 
vpath %cpp RTW/ModelRTW:RTW/StandardTests:RTW/TestFramework:RTW/TestFromFile:../../../CommonCode:../04_Model/DLib 

Я пытался процитировать, спасаясь '\' и несколько других воплощений, но безрезультатно.

Любая помощь будет принята с уважением.

Ed

+0

Я могу найти комментарии от нескольких лет назад, говоря, что он не поддерживается. Вероятно, это все еще так. Можете ли вы реализовать свой make-файл, чтобы vpath не нужен? –

+0

Сделать документацию, в частности, означает, что пространства 'vpath' считаются разделителями путей, [источник] (http://git.savannah.gnu.org/cgit/make.git/plain/vpath.c), похоже, не обнаруживает каких-либо способ изменения этого поведения (возможно, создание пользовательской локали, которая изменяет поведение 'isspace', может работать, возможно, она сломается почти во всем остальном). – user657267

+0

Вы не можете писать make-файлы для путей, содержащих пробелы. vpath - лишь незначительная вершина очень большого айсберга. Пути, содержащие пробелы, сложны для работы со всеми различными типами инструментов, а не просто с их помощью. Лучше их избегать. – MadScientist

ответ

2

К сожалению, это very old known defect, #712, и люди смотрели в него несколько раз, так как сообщалось, в 2002 году

GNU сделать не обрабатывает пробелы в именах, и никогда не имеет ,

Если вы попытаетесь исправить это, у вас будет серьезный вызов впереди, так как огромное количество проектов полагается на него. Те, кто нуждается в поддержке пробелов, переходят к более совершенным системам сборки. На протяжении десятилетий было много инструментов для создания скриптов, но при этом все еще сохранялось, несмотря на многие серьезные проблемы. Формат make вкладок и пробелов был раздражающим разработчиками почти 40 лет.

Источник доступен, не стесняйтесь исправить его, если хотите. Большинство разработчиков, которые пытаются в конечном итоге отказаться или создать еще одну скриптовую систему сборки.

+0

GNU make поддерживает альтернативные символы введения рецепта (кроме TAB) с версии 3.82 (выпущен в 2010 году). – MadScientist

0

Лучший способ - написать m-скрипт для копирования файла (ов) в каталог сборки, где путь является свободным от пространства. Если вы используете Simulink, то m-script вызывается на крюке «before_make».

+1

Добавьте описание. – Billa

Смежные вопросы