0
構造:Makefileのツリーは複数のターゲットをビルドします
makefile
system/
-> makefile
-> kernel/
-> -> makefile
-> -> src/
-> FutureModules
-> -> makefile
-> -> src/
userland/
-> makefile
-> FutureModules
-> -> makefile
-> -> src/
は現在、私はmake system
でそれを構築しています。私は複数のターゲット(例えばmake debug system userland
またはそのようなもの)でmake debug system
またはmake -d system
ような何かを行うことができるように、私はデバッグ/テスト/リリースにそれを分割したい
- を構築します。
system
をビルドする代わりにターゲットを直接ビルドすることができ、手動でsystem/makefile
に目的のターゲットを追加する必要があるので、ターゲットを変更したいと思います。今
は、この達成するために:
- は定数を行いメイクファイル間で共有されますか?だから、私が
make system
を実行してルートメークファイルにCFLAGS += -g -Og
を定義した場合、system/makefile
はルートメイクファイルから定数を取得しますか? - 定数はmakeセッションで同じままですか?だから私が
make debug system userland
をしてdebug: CFLAGS += -g -Og
のようなものを持っている場合、システムとuserlandは-g -Og
フラグを得ますか?
編集:私は$(shell find -maxdepth 1 -type d)
や他のいくつかのコマンドを使用して2を達成するために管理。
#Build mode. m=d => Debug | m=t => Test | m=r => release | default => release
ifeq ($(m), d)
NASBUILD = $(NASDEBUG)
GASBUILD = $(GASDEBUG)
CPPBUILD = $(CPPDEBUG)
CBUILD = $(CDEBUG)
else ifeq ($(m), t)
NASBUILD = $(NASTEST)
GASBUILD = $(GASTEST)
CPPBUILD = $(CPPTEST)
CBUILD = $(CTEST)
else ifeq ($(m), r)
NASBUILD = $(NASRELEASE)
GASBUILD = $(GASRELEASE)
CPPBUILD = $(CPPRELEASE)
CBUILD = $(CRELEASE)
else
NASBUILD = $(NASRELEASE)
GASBUILD = $(GASRELEASE)
CPPBUILD = $(CPPRELEASE)
CBUILD = $(CRELEASE)
endif
export NASBUILD
export GASBUILD
export CPPBUILD
export CBUILD
:
なぜ、すべてのブランチに 'export'行を置いていますか?これは解決策ですが、より洗練された解決策が可能です。 – Beta
私は割り当てられた後に変数をエクスポートしなければならないと思ったので。 – DevNoteHQ