0
targetOne : header/headerAB.h source/sourceA.cpp source/sourceB.cpp source/main.cpp
         g++ -Wall header/headerAB.h source/sourceA.cpp source/sourceB.cpp source/main.cpp

これを 1 つに保つのではなく、複数のターゲットに分割する必要がある理由はありますか?
Makefile 内のターゲットではなく、個別のターゲットが必要になるのはどのような場合ですか?

4

2 に答える 2

1

一般に、柔軟性とスケーラビリティのために、「同じルールで複数のファイルを作成することの利点は何ですか」と尋ねる必要があります。初めてビルドを行うときは、すべてが同じルールでコンパイルされると、より速くなる可能性があります。

ただし、後続の手順で、1つのソースコードファイルを変更するだけの場合、他のすべてのソースコードファイルをオブジェクトファイルにビルドする必要がありますか?私は想像しません。しかし、すべてを1つのルールで実行すると、それが起こります。そして、あなたがたくさんのソースコードファイルを持っているなら、それは高くつくでしょう。

これは、ライブラリを構築する場合、すべてのソースをコンパイルしてからライブラリをアーカイブする1つのルールがあると言うのではなく、別のステップとしてライブラリを構築することをお勧めします。もちろん、そのような状況では、ライブラリのアーカイブ手順で、ソースコードがどのようにコンパイルされたか、さらにはどの言語であるかを知る必要がないため、メンテナンスが容易になります。

于 2012-07-02T12:24:16.257 に答える
1

引用http://mrbook.org/tutorials/make/

依存関係の使用。異なるターゲットを使用すると便利な場合があります。これは、プロジェクト内の 1 つのファイルを変更した場合、すべてを再コンパイルする必要はなく、変更したものだけを再コンパイルする必要があるためです。

そのため、部分的なソースの更新後の再コンパイルが高速になります。そして、これは、変更が非常に小さい巨大なプロジェクトの場合は「実装する必要があります」(> 1M LOC プロジェクト全体と比較して)。

また、複数のターゲットを使用すると、プロジェクトのさまざまな部分にさまざまなルールを設定できます。

于 2012-07-02T12:14:16.180 に答える