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

Jawaban:


113

Anda harus menambahkan setiap direktori dengan -I:

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

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)

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.