CMakeとMakefileの違い

konnyaku

概要

c++を久しぶりに使おうと思ったけど、一から環境作るのは久しぶりで色々忘れていました。 cmake と make の違いについて調べました。

c++の仕組み

そもそもプログラムはコンパイラを用いる方法とインタープリターを用いる方法があります。

  • コンパイラ
    • プログラムを一度実行ファイルに変換することで実行できるようにする
    • C, C++, Java
  • インタープリター:はプログラムを一行ずつ読んで実行していく
    • Python, JavaScript

Makefile

ここで関わってくるのはコンパイル方式の方です。コンパイルは例えば以下のように実行されます。

g++ -o main.o main.cpp

これを make を使うと

make main

などのように簡単に書くことができます。他にも実行ファイルの削除や Include もできます。

CMake

C++ではいろんなライブラリやフレームワークを使うこともあります。しかし C++のコンパイラは OS に依存して複数のコンパイラが存在していて、オプションなどの仕様が異なります。そのため Makefile も OS ごとに書き換えなければいけません。それを代わりにやってくれるのが CMake です(便利!!!)。CMake をした後には実行ファイルや Makefile が作られます。ディレクトリ構造など使い方についてはcmake をつかうc++について詳しくをご覧ください。

参考文献

C/C++ソースコードのビルド:Makfile & CMake