私は自分のプロジェクトでサブディレクトリを作成しようとしています($PROJECT/child
と呼んでください)、その親からというメークファイルをプルする必要があります。$PROJECT/Makefile.inc
。後で$PROJECT/child
を別の場所にコピーして、$PROJECT
から独立して実行することができます。コンポーネントのMakefileを含める前に、どのようにコマンドを実行しますか?
両方のプロジェクトに含める必要があり、サブディレクトリがコピーされるときに出荷される共通のMakefileがあります。どちらの場合でもインクルードする必要があります。だから私はchild
ビルド時にそれをリンクすると思った。 (../Makefile.inc
を含めることは望ましくありません。これは、プロジェクトをコピーすると消えてしまい、Makefile.inc
を置くことを呼び出し元のビルドシステムに任せたくないからです。)
これらの制約を使用すると、
HACK = $(shell test -f Makefile.inc || ln -f ../Makefile.inc .)
include $(HACK)Makefile.inc
お知らせその2番目のコマンドに余分な特別なダクトテープ:ここで私は$PROJECT/child/Makefile
以内に、これを行うために作ってみた恐ろしいハックです。私は実際に$(HACK)
を含める必要がありますが、空になるので、$(shell ...)
が評価されます。 ;-)
これを行うためのクリーンな方法はありますか?
美しいです!ありがとう。私は、カジュアルな観察者に何が起きているのかを明確にするためのコメントを追加しました。 – mpontillo