вопрос makefile - PullRequest
       1

вопрос makefile

0 голосов
/ 10 марта 2011

Я хочу изменить make-файл, включив в него локальный каталог заголовков. Однако большая часть компиляции make-файла происходит вне моего текущего make-файла, ограничивая то, что я могу сделать. Вот текущий сборочный файл:

TARGET =    final    
LIBS =      -lsimple -lcheck -lsuif -luseful    
OBJS =      doproc.o main.o

all:            $(TARGET)

install-bin:    install-prog
include $(SUIFHOME)/Makefile.std

Каталог заголовков (boost), который я хочу использовать, находится в том же каталоге, что и этот makefile и doproc.cc/main.cc. Я попытался изменить make-файл к этому

TARGET =    final
INC=        -I/boost
LIBS =      -lsimple -lcheck -lsuif -luseful
OBJS =      doproc.o main.o

all:            $(TARGET) $(INC)

install-bin:    install-prog

include $(SUIFHOME)/Makefile.std

но безрезультатно. У меня есть аккаунт на этом компьютере, но нет доступа с правами root, и я не могу изменить Makefile.std. Если это тривиально, я прошу прощения. Я не привык использовать makefiles.

Заранее спасибо

EDIT:

Предложения, которые до сих пор были полезны для получения правильного каталога. Но это все еще не делает каталог включенным в компиляцию

Ответы [ 4 ]

3 голосов
/ 10 марта 2011

Хорошо, очень трудно разглядеть все детали, не зная внутренностей Makefile.std. Тем не менее, давайте предположим, что $(INC) не каким-то волшебным образом используется внутри Makefile.std (по крайней мере, это не один из макросов по умолчанию, см. make -p), в этом случае вам придется добавить ваши включаемые папки в * 1004. * (для C ++) или CFLAGS (для C) вот так:

CXXFLAGS+=$(CXXFLAGS) -I$(MAKEDIR)/boost

Примечание: есть разные варианты, но с того места, где я стою

all:            $(TARGET) $(INC)

не имеет особого смысла для значения -I/boost или даже для исправленного -I$(MAKEDIR)/boost. Причина в том, что это не присвоение переменной (что возможно вместо зависимостей) и, следовательно, будет рассматриваться как файловая зависимость (если не объявлено .PHONY).

Я должен добавить, что я принимаю обычные правила по умолчанию, которые поставляются с GNU make. В противном случае вам нужно будет показать нам действительные правила %.o: %.cpp и т. Д. *

1 голос
/ 10 марта 2011

Используйте это - ваш текущий INC указывает / не увеличивает ./boost:

INC=        -I$(PWD)/boost
0 голосов
/ 10 марта 2011

/ - корень файловой системы;./ является текущим каталогом.

Вы имели в виду -I./boost?-Iboost тоже работает.

0 голосов
/ 10 марта 2011

Удалите ведущий / перед бустом. Вы говорите компилятору искать в /boost корневую папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...