見出し画像

CMakeを使うためのメモ|c++開発環境

c++のビルドツールとしてCMakeを導入してみたのでメモ。

作業OS: Linux(Arch Linux)

CMakeを使う前の状況

 vimでc++のコードを作成し手作業でg++でコンパイル、リンクし実行ファイルを実行するというやりかたをやってきました。

これだとファイルが増えた場合のコンパイル、リンク処理が手動なので大変になってきます。そこで、c++の開発環境構築について調べていて知った有名なビルドツールのCMakeを使ってみようと考えました。

CMakeはvisual c++ やgccなど基本的に異なるビルド環境の両方に対応しているマルチプラットフォームなビルドツールであることもCMakeを利用することの利点。

 Linuxではpacmanなどのリポジトリからインストールできるのでインストール。

$ sudo pacman -S cmake

CMakeの基本的な動作確認するためのディレクトリとc++のファイルを作成

$ mkdir hello
$ touch hello.cpp

hello.cpp

#include <bits/stdc++.h>

using namespace std;

int main(){
cout << "Hello world!" << endl;
return 0;
}

このファイルをCMakeでビルドします。

CMakeのプロジェクト用のファイルCMakeLists.txtを作成

// CMakeLists.txt
project(hello)
add_executable(hello hello.cpp)

project()を書くことでcmakeのプログラムがpcのシステムで使われているコンパイラを確認、ビルド用のパラメータを設定したりするみたい。

project()のかっこの中はプロジェクトの名前で、何でもokみたい。

add_executable()の引数には元となるソースファイルと実行ファイルの名前を渡す。

ソースファイルはここではhello.cppで、生成される実行ファイルの名前はhelloとしている。実行ファイルの名前はわかりやすければ何でもokと思う。

実行ファイルはビルドの成功で出来上がるファイルで、

$ ./helloと実行するファイルのこと。

プロジェクトをビルドするためにhelloディレクトリ内にビルドディレクトリを作成

$ mkdir build
$ cd build

ソースファイル(cppファイル)とビルドファイルが混在するとごちゃごちゃするので、ビルド用のディレクトリを作成し、その中で実行ファイルの生成を行う。

buildディレクトリの中でcmakeコマンドを実行することで、buildディレクトリの中にビルドに必要なファイル類が生成される。

引数の..はカレントディレクトリより一つ上の階層を表していて、cmake ..とした場合、カレントディレクトリの一つ上のhelloディレクトリに実行ファイルが作られ、ビルドに必要なファイル類はbuildディレクトリに生成される。

$ cmake ..

cmake .. の前にcmake -Gとすると、どのコンパイラ向けのファイル類を生成するか一覧が表示される。

Unix Makefilesを選択したい場合は、下記のように指定しcmakeコマンドを実行する。

$ cmake -G "Unix Makefiles" ..


cmakeについての詳しいマニュアルはmanコマンドでも見れます。

$ man cmake

ここまでで、ビルドする準備ができたので、最後にmakeするとビルドが実行され、実行ファイルがhelloディレクトリに生成されます。

$ make


ビルドされた実行ファイルを実行

の$ ./hello
// 実行結果
Hello World!

作業だけで考えると意外と簡単でした。c++と長く付き合うつもりなので、cmakeとも長い付き合いになりそうですので、これをもとに少しずつcmakeの使い方や中身について深めていけたらいいなと思っています。



この記事が気に入ったらサポートをしてみませんか?