1. ホーム
  2. linux

[解決済み] 異なるディレクトリにソースファイルを持つMakefile

2022-04-28 16:32:25

質問

私は、ディレクトリ構造が以下のようなプロジェクトを持っています。

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

part/src にある c/c++ ソースファイルをコンパイル・リンクできる makefile はどのように書けばいいのでしょうか?

次のようなことは可能ですか? -I$projectroot/part1/src -I$projectroot/part1/inc -I$projectroot/part2/src ...

もしそれでうまくいくのであれば、もっと簡単な方法はないでしょうか。 私は、対応するパート?フォルダーにそれぞれmakefileがあるプロジェクトを見たことがあります。 [この投稿では、bashの構文のようにクエスチョンマークを使いました]。

どのように解決するのですか?

従来の方法としては Makefile を、それぞれのサブディレクトリ ( part1 , part2 など)を独立して構築することができます。さらに Makefile を、すべてをビルドするプロジェクトのルートディレクトリに置きます。 ルートディレクトリには、"root" Makefile は次のような感じになります。

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

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

を見てみることをお勧めします。 GNU make マニュアル 5.7 節 とても参考になります。