1. ホーム
  2. c++

[解決済み] MakefileとCMakeを使ったコンパイルの違いについて

2022-03-23 03:17:12

質問

C/C++でコーディングし、(GNU)Makefileを使ってコンパイルしています。CMakeでも同じことができ、MakeFileを取得することができますね。しかし、MakefileとCMakeを使用してコードをコンパイルすることの違いは何ですか?

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

Make (というより Makefile) はビルドシステムです。コンパイラやその他のビルドツールを動かして、コードをビルドします。

CMake はビルドシステムを生成するものです。Makefile を生成し、Ninja ビルドファイルを生成し、KDEvelop や Xcode プロジェクトを生成し、Visual Studio ソリューションを生成することができます。同じ出発点、同じCMakeLists.txtファイルからです。ですから、プラットフォームに依存しないプロジェクトがあれば、CMakeはそれをビルドシステムにも依存しないようにする方法なのです。

Visual Studio に慣れている Windows 開発者と GNU Make に固執する Unix 開発者がいる場合、CMake は (そのうちの) 一つの方法です。

あなたのプロジェクトがマルチプラットフォームであったり、広く使用されることを意図しているのであれば、私は常に CMake(または他のビルドシステム・ジェネレータ、しかし個人的には CMake が好みです)を使用することをお勧めします。CMake 自身も、依存性検出、ライブラリインターフェイス管理、あるいは CTest、CDash、CPack との統合のような素晴らしい機能を提供しています。

ビルドシステム・ジェネレータを使用することで、プロジェクトはより将来性のあるものになります。今は GNU-Make オンリーであっても、後になって他のプラットフォーム (Windows や組み込み機器) に拡張することになったり、単に IDE を使いたいと思った場合はどうでしょうか。