Makefile'da birkaç içerme yolu nasıl tanımlanır


98

C ++ için yeni; Dahil etme, kitaplıklar ve derleme süreci hakkında temel anlayış Henüz birkaç basit makefile yaptım.

Mevcut projem bir informix DB api kullanmayı içeriyor ve birden fazla standart olmayan dizine başlık dosyalarını eklemem gerekiyor. Nasıl yazılır? Havent internette bir şey buldu, çünkü muhtemelen iyi arama terimleri kullanmadım

Bu denediğim yollardan biri (çalışmıyor). Sadece makefile'ı göstermek için

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

Yanıtlar:


116

Her dizinin başına şunları eklemelisiniz -I:

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

1
Hala benim için çalışmıyor, ancak gcc'yi manuel olarak çalıştırmak bunu yapıyor.
NoBugs

94

-IHer dizini kullanmanız gerekir . Ancak (GNU) make'leri kullanırsanız, dizinleri yine de boşluklarla sınırlandırabilirsiniz foreach:

INC=$(DIR1) $(DIR2) ...
INC_PARAMS=$(foreach d, $(INC), -I$d)

18
Veya kısa: INC_PARAMS=$(INC:%=-I%)ile değiştirmelerin . $(foreach,,)daha okunabilir, ancak ikameler o kadar yaygın olarak kullanılmaktadır ki, nasıl çalıştıklarını öğrenmek iyidir.
skalee

5
veya INC_PARAMS = $(addprefix -I,$(INC)).
Ma Ming
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.