異なるディレクトリにあるソースファイルを持つMakefiles 質問する

異なるディレクトリにあるソースファイルを持つMakefiles 質問する

次のようなディレクトリ構造のプロジェクトがあります:

                         $projectroot
                              |
              +---------------+----------------+
              |               |                |
            part1/          part2/           part3/
              |               |                |
       +------+-----+     +---+----+       +---+-----+
       |      |     |     |        |       |         |
     data/   src/  inc/  src/     inc/   src/       inc/

part/src (または実際にはどこでも) にある、part?/src の c/c++ ソース ファイルを補完/リンクできる makefile をどのように記述すればよいでしょうか?

-I$projectroot/part1/src -I$projectroot/part1/inc -I$projectroot/part2/src のような操作を実行できますか?

それがうまくいくなら、もっと簡単な方法はありますか。対応する各パート フォルダーに makefile があるプロジェクトを見たことがあります。[この投稿では、bash 構文のように疑問符を使用しました]

ベストアンサー1

従来の方法は、Makefile各サブディレクトリ ( part1、など) に を配置して、それらを個別にビルドできるようにすることです。さらに、すべてをビルドする をプロジェクトのルート ディレクトリにpart2配置します。「ルート」は次のようになります。MakefileMakefile

all:
    +$(MAKE) -C part1
    +$(MAKE) -C part2
    +$(MAKE) -C part3

make ターゲット内の各行は独自のシェルで実行されるため、ディレクトリ ツリーを遡ったり、他のディレクトリに移動したりする必要はありません。

ぜひご覧になってみてくださいGNU make マニュアル セクション 5.7; とても役に立ちます。

おすすめ記事