2

変数のデフォルト値を持つマスターメイクファイルと、プロジェクト固有の設定を含む子メイクファイルがあります。子 makefile の最後に、マスター makefile を含めます。

マスターメイクファイルで次のコードを使用して、変数のデフォルト値を設定しています

ifndef CC
    CC = avr-gcc
endif

そして最近、私もできると読みました

CC ?= avr-gcc

したがって、私の質問は、両方が同じかどうか、そしてそうであればどちらが変数をオーバーライドする推奨される方法かということです。

4

1 に答える 1

3

2 番目の方法は、広く理解され、読みやすく、混乱が少なくなります。

最初の方法は、変数を設定するだけでなく、設定されているかどうに応じて多くのことを切り替えたり、その他のifndef / endifことをしたい場合に使用します。DEBUG

変数がまだ設定されていない場合に変数を設定したいだけであれば、var ?= value間違いなく十分です。

于 2013-09-18T10:25:15.840 に答える