Bagaimana mendefinisikan beberapa path include di Makefile

96

Baru di C ++; Pemahaman dasar termasuk, pustaka dan proses kompilasi. Melakukan beberapa makefile sederhana.

Proyek saya saat ini melibatkan penggunaan api DB informix dan saya perlu menyertakan file header di lebih dari satu direktori tidak standar. Bagaimana cara menulisnya? Havent menemukan sesuatu di internet, mungkin karena saya tidak menggunakan istilah pencarian yang bagus

Ini adalah salah satu cara yang saya coba (tidak berhasil). Hanya untuk menunjukkan makefile

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
sumber

Jawaban:

113

Anda harus menambahkan setiap direktori dengan -I:

INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public
Antoine Pelisse
sumber
1
Ini masih tidak berhasil untuk saya, meskipun menjalankan gcc secara manual.
NoBugs
94

Anda perlu menggunakan -Idengan setiap direktori. Tetapi Anda masih dapat membatasi direktori dengan spasi jika Anda menggunakan (GNU) make's foreach:

INC=$(DIR1) $(DIR2) ...
INC_PARAMS=$(foreach d, $(INC), -I$d)
wilhelmtell.dll
sumber
10
+ Inilah yang saya cari ke sini. $(foreach,,)
Jonathon Reinhart
18
Atau lebih pendek: INC_PARAMS=$(INC:%=-I%)dengan pergantian pemain . $(foreach,,)lebih mudah dibaca, tetapi substitusi sangat umum digunakan sehingga sebaiknya Anda memahami cara kerjanya.
skalee
5
atau INC_PARAMS = $(addprefix -I,$(INC)).
Ma Ming
Saya datang ke sini $(foreach,,)juga.
J. Doe