LINUX.ORG.RU

Как заставить makefile использовать ссылки?


0

1

Допустим есть директории /directory1/directory2/directory3/ и /directory4/ и в ней ссылка на directory2, т.е. путь будет такой: /directory4/link_to_directory2/directory3/

В directory3 есть makefile, в нём с помощью SOURCES = подключен файл includes.h, находящийся в этой же папке, с помощью которого инклудится файл, находящийся в directory4: #include "../../myfile"

Делаю make из /directory4/link_to_directory2/directory3/ но #include игнорирует ссылки (как команда pwd -P), в результате попадаем в directory1 вместо directory4.

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

Что-нибудь типа $(shell pwd) в includes.h не работает, т.к. это уже не makefile.


У тебя не структура пакета, а говно. Переделай по-человечески.

r2d2
()

ремонтный дроид дело говорит.

Jetty ★★★★★
()
Ответ на: комментарий от io

Работает, если задать -I/directory4/ а в includes.h написать #include «myfile»

Но как получить строку «/directory4/»? $(shell pwd) возвращает /directory4/link_to_directory2/directory3/, а как «откусить» от этой строки 2 папки(длинна имён папок может быть любой)?

IOne
() автор топика
Ответ на: комментарий от IOne

Никто sed не отменял:

$ echo /xixi/xaxa/xoxo | sed -e 's%^\(/[^/]*/\).*$%\1%'
/xixi/

В самом Makefile (если нет пробелов в именах директорий):

tttt=$(firstword $(subst /, ,/abc/xyz/uuu))
all:
echo /$(tttt)/

Запускаем:

$ make
echo /abc/
/abc/

io ★★
()
#include "../../myfile"

А за такое надо чайной ложечкой... нутыпонял.

Только #include «myfile» и рулить -I

r2d2
()
Ответ на: комментарий от io

Спасибо, но ваш пример выдаёт название, у меня directory4 может лежать где угодно, мне нужно отрезать 2 последних католога от пути.

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