Makefileで複数のインクルードパスを定義する方法


96

C ++の新機能。インクルード、ライブラリ、およびコンパイルプロセスの基本的な理解。いくつかの単純なmakefileはまだありましたか。

私の現在のプロジェクトでは、informix DB apiを使用しているため、ヘッダーファイルを複数の非標準ディレクトリに含める必要があります。どうやって書くの?ネットで何かを発見したことはありません、おそらく私が良い検索用語を使用しなかったためです

これは私が試した方法の1つです(動作しません)。メイクファイルを表示するだけです

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

回答:



92

-I各ディレクトリで使用する必要があります。ただし、(GNU)make'sを使用すると、ディレクトリを空白で区切ることができますforeach

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

9
+これは私がここに探しに来たものです。$(foreach,,)
Jonathon Reinhart、2012年

16
それとも短い:INC_PARAMS=$(INC:%=-I%)置換$(foreach,,)より読みやすくなりますが、置換が一般的に使用されるため、とにかくそれらがどのように機能するかを理解することは良いことです。
スケーリー2014年

5
またはINC_PARAMS = $(addprefix -I,$(INC))
Ma Ming

私もここに来ました$(foreach,,)
J. Doeの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.