20

最近、ビルドツールを学ぶ必要性を感じています。推奨事項について StackOverflow を調べていますが、Gnu Make についてはほとんど言及されていません。代わりに、Ant、Maven、CMake、Scon などを目にします。ただし、時々コンパイルしなければならない小さな「不正なソース」(リポジトリにないものなど) を見ると、それらすべてにmake && make install手順が必要です。

学習は、別のツールを学習するよりも時間の無駄遣いになりますか?

もしそうなら、なぜMakeは今でも人気があるのでしょうか?

4

8 に答える 8

24

Make はすべての C/C++ の標準ビルド ツールです。他の多くの企業が参入してきましたが、便利で成功していたとしても、make のユビキタスを実現することはできませんでした。

Make は事実上すべての Unix ライクなマシンにインストールされています。AIX、Solaris、Irix、BSD、Linux のいずれを使用していても、コンパイラがインストールされていれば、make も存在します。

「置換」の一部 (Automake、CMake など) は Makefile を作成し、make によって実行されます。

make に慣れることを強くお勧めしますmake について時間をかけて学んだ人が扱えば、それは強力なツールであり、必ずしもソフトウェア開発に関係なくても、さまざまな方法で使用できます。

最終的に別のビルド ツールを使用することになったとしても、基礎となる概念は非常に似ているため、make で学んだ教訓を「再利用」することができます。そして、make でビルドされたプロジェクトの数が非常に多いということは、既存の Makefile を把握しなければならない可能性が常にあることを意味します。

ただし、1 つ。最初から正しく理解してください。

于 2009-08-27T13:54:15.180 に答える
8

(GNU) make が言及されていない理由は、それが多くの場合デフォルトであるためだと思います。GNU ツールチェーンをお持ちの場合は、make が既に行われています。したがって、ビルド ツールについて話し始めるほとんどの人は、別のことについて話します。

私の経験では、make は問題ありませんが、やりたいことを正確に行うのは難しい場合があります。少し難解かもしれませんが、実証済みで機能します。

于 2009-08-27T13:40:45.773 に答える
3

Make は、Linux/* nix プロジェクトの C/C++ ソースに (主に) 使用されているため人気があり、言及した他のどのツールよりもはるかに古いため、時の試練に耐え、成熟しています。タールっぽい。

正直なところ、私はメイクしか知りません。上記の他のツールの方が優れているかもしれませんが、多くのプロジェクトは基本的な Makefile を使用しているだけなので、少なくとも少しは知っておくのが最善です。仕事中の自分のプロジェクトだけでなく、ネット上で見つけたオープンソースのプロジェクトのほとんどに。

于 2009-08-27T13:39:07.930 に答える
2

それは本当にあなたがそれをどれだけ使うかによって異なります.

yoy が C/C++ make プロジェクトで多くの作業を行っている場合は、そうです。大きな make ファイルは、あなたが言及した他のビルド ツールよりも学習曲線が急勾配であるため、それについてさらに学習することをお勧めします。

make を使用しない場合、または C#、Java、PHP などの他の言語を使用する場合は、それらの言語に関連するビルド ツールを学習したほうがよいでしょう。

于 2009-08-27T13:40:33.327 に答える
1

すべてのツールと同様に、使用する場合は、十分に熟達できるように時間を割く必要があります。また、一部のツール (たとえば、CMake など) は makefile を生成し、いつか生成されたファイルをいじる必要があるかもしれません。

GNU make には優れたマニュアルがあります。1 時間か 2 時間かけて読む価値があります。

于 2009-08-27T13:41:04.073 に答える
1

たとえば、Linux システムでは Make がデファクト スタンダードです。これは非常に複雑なツールであり、非常に強力なツールでもあります。

C または C++ を開発している場合、特に Linux/*nix をターゲットにしている場合に学習するのに適しています。

make の機能の 1 つは、いつファイルを再構築するかの依存関係を設定できることです。たとえば、各 c または c++ ファイルは .obj ファイルにビルドされ、最終的にすべての .obj ファイルが実行可能ファイルにリンクされます。しかし、実行可能ファイルは静的にリンクされたライブラリであり、他の .obj ファイルを含む別の実行可能ファイルにリンクされている可能性があります。

make は、.obj ファイルより新しい場合にのみ ac ファイルをコンパイルするように定義できるため、コンパイル時間をできるだけ短くすることができます。そのため、コンパイルまたはリンクのステップは、そのステップの現在のソース ファイルがターゲット ファイルよりも新しい場合にのみ実行されます。

たとえば C# で開発している場合、すべての .cs ファイルが一度に 1 つの実行可能ファイルにコンパイルされるため、この種の依存関係チェックは必要ありません。

結論として、選択したプログラミング言語に適したビルド ツールを使用する必要があります。

于 2009-08-27T14:42:01.240 に答える
0

最終的に別のビルド ツールを使用することになったとしても (個人的には VS が好きです... わかっています...)、make を知っていると、おそらくより便利になるでしょう。

Make には多くのアプリケーションがあり、単一のタスクには必ずしも理想的ではありませんが、新しいテクノロジーを扱う場合は、堅牢で柔軟です。

于 2009-08-27T13:40:45.213 に答える
0

おそらくどこで働いているかは違うと思いますが、少なくとも Makefile の読み方を学ばなければ、どこで働いていたとしても価値の低い従業員になっていたことはわかっています。すべての Windows-VisualStudio 環境でさえ、時々発生します。

たとえば、古い CX/UX コードの束を Windows に移植する仕事を獲得したばかりです。古いコードはメイクファイルで構築されていました。古いメイクファイルの読み方を知らずに、古いシステムを理解する方法はありません。

于 2009-08-27T14:27:31.280 に答える