LINUX.ORG.RU

Как писать имена файлов в мейкфайлах?


0

1

У меня есть массив имён объектных файлов OBJECTS, и я его подставляю в правило:

a.out: $(OBJECTS)
	gcc $^

Оно работает до тех пор, пока в массиве OBJECTS не появится файл с именем, начинающимся на дефис. В таком случае получается ошибка, ведь GCC думает, что это опция.

Я пробовал писать подобные имена в виде "./-file.o", но make самовольно обрезает их до "-file.o". Я пробовал использовать псевдоопцию "--", но GNU Compiler Collection не поддерживает GNU стандарт на параметры командной строки, поэтому у него нет такой псевдоопции.

Что можно сделать, кроме как переименовать объектные файлы?



Последнее исправление: Pew-pew (всего исправлений: 1)

1. Не балуйся такими извращениями — именуй файлы по-человечески.
2. Если у тебя больше двух файлов и в зависимостях больше пары библиотек, нет смысла писать Makefile вручную! Воспользуйся, например, cmake'ом.

Eddy_Em ☆☆☆☆☆
()

не начинать файлы с дефиса? зачем это вообще может понадобиться?

marvin_yorke ★★★
()

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

А так, можно вместо gcc вызывать свой скрипт, который правильно передаст имена файлов gcc (добавив "./") или вместо ″$^″ написать ″(addprefix ./,$^)″ или вместо ″addprefix″ написать свою функцию преобразования имён файлов.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.