2012-01-12 1 views
3

私のメイクファイルは、このルール/レシピを持っている:私は最近、Cygwinをアップグレードし、3.82.90(以前のバージョンは、おそらく3.81だった)を作りましたまでなぜgnuは明示的なパターンルールを無視し、組み込みの暗黙ルールを使用するのですか?

%o: %cpp Makefile 
    g++ -Wall -Wextra -MMD -MP -O2 -c -o [email protected] $< 

これがうまく働きました。私のパターンはpercent-を分離するドット(ピリオド)を持っていなかった

g++ -c -o Foo.o Foo.cpp 

答えて

0

今で3.82を作る、それはのような、私のルールを無視し、代わりに各ファイルをコンパイルする組み込みのルールを使用しています記号と拡張子。これに変更することで解決される問題:

%.o: %.cpp Makefile 
    g++ -Wall -Wextra -MMD -MP -O2 -c -o [email protected] $< 
+0

あなたが実行した場合、 '-np'作るので、あなたが実際に、ルールの前に' CPPFLAGS'および/または 'CXXFLAGS'変数を定義することで、代わりにビルトインルールを使用することができます'$ {CC} $ {CXXFLAGS}のように' COMPILE.cc'が設定されている '$ {COMPILE.cc} -c -o $ @ $ <'のような組み込みのルールが定義されていることがわかります。 $ {CPPFLAGS} ' - それが違う場合は、私が知る限り、これだけを拡張します。 –

関連する問題