Как определить несколько включаемых путей в Makefile

99

Новое в C ++; Базовое понимание включает, библиотеки и процесс компиляции. Сделал еще несколько простых make-файлов.

В моем текущем проекте используется api informix DB, и мне нужно включить файлы заголовков в более чем один нестандартный каталог. Как это написать? Ничего не нашел в сети, вероятно, потому что я не использовал хорошие поисковые запросы

Это один из способов, который я пробовал (не работает). Просто чтобы показать make-файл

LIB=-L/usr/informix/lib/c++
INC=-I/usr/informix/incl/c++ /opt/informix/incl/public

default:    main

main:   test.cpp
        gcc -Wall $(LIB) $(INC) -c test.cpp
        #gcc -Wall $(LIB) $(INC) -I/opt/informix/incl/public -c test.cpp

clean:
        rm -r test.o make.out
Groovehunter
источник

Ответы:

117

Вы должны добавить к каждому каталогу -I:

INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public
Антуан Пелисс
источник
1
У меня все еще не работает, хотя запуск gcc вручную делает это.
NoBugs
94

Вам нужно использовать -Iс каждым каталогом. Но вы все равно можете разделить каталоги пробелами, если вы используете (GNU) make's foreach:

INC=$(DIR1) $(DIR2) ...
INC_PARAMS=$(foreach d, $(INC), -I$d)
Wilhelmtell
источник
18
Или короче: INC_PARAMS=$(INC:%=-I%)с заменами . $(foreach,,)более читабелен, но замены используются настолько часто, что в любом случае полезно ознакомиться с тем, как они работают.
skalee
5
или INC_PARAMS = $(addprefix -I,$(INC)).
Ma Ming