Как определить несколько включаемых путей в 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

Ответы:


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)

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

5
или INC_PARAMS = $(addprefix -I,$(INC)).
Ma Ming
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.