皆さんこんにちは、紫夜千景です。
今回は、CMakeを使ったC言語の開発環境を構築していく記事になります。
かつての記事で紹介していた方法ではGCCを用いてC言語の環境を作ってきましたが、今回は 「CMake」 を用いてC言語の開発環境を作っていきます。
※かつての記事
また、今回もWSLを用いて環境を構築していくのでWSLのセットアップ、OSのインストールは行っていることを前提として進めていきますのでまだの方は上記の記事を参考にセットアップなどをしていただければと思います。
今回はUbuntuではなくDebianを使用していますが千景さんの趣味なだけの上、Ubuntuでも同じことができるので気にしないでください。
インストールの前に
なんかめんどくさい不具合が起きるのを防ぐために、
sudo apt-get update -y && sudo apt-get upgrade -y
を実行してとりあえずパッケージ類を最新にしておきます。
これが終わったら作業開始です。
CMakeのインストール
Debianを起動し、ターミナルに
sudo apt install cmake build-essential
を打ち込んで実行します。
とりあえずこれでCMakeと他に必要なパッケージを導入します。
千景さんの場合、他にもいろいろインストールするパッケージがあるのでストレージが437MBくらい食われました。ストレージを気にする方はご注意ください。
インストールが終わったら、
cmake --version
インストールできたのが確認できたら、CMakeに必要なファイルを作っていきます。
今回、CMakeのインストール方法をロボコン部の友人に聞いたのでファイル構造が他で解説されているものと若干違いますがご了承ください。
まず、rootディレクトリに build というフォルダを作り、その中に移動します。
mkdir build
cd build
さらにその中に、 include と src フォルダを作ります。
mkdir include
mkdir src

buildディレクトリ内がこんな感じになってたら大丈夫だと思います。
これらのフォルダを作り終わったら、先ほど作った include と src には移動せずにbuildディレクトリの一つ上(ホームディレクトリ)でファイルを作ります。
touch CMakeLists.txt
ホームディレクトリに CMakeLists.txtを作成し、そのファイルをnanoで開いて以下のコードを書き込みます。
nano CMakeLists.txt
cmake_minimum_required(VERSION 3.31.6)
project(name) *1
add_executable(a.out *2
for_example.c *3
)
target_include_directories(name PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
各文の意味を解説しておくと、
*1 ... プロジェクトの名前のやつ。適当に付けても不具合は起きないはず。
*2 ... これだと./a.outが実行コマンドになる。ここを変えると実行コマンドも変わる。
*3 ... ビルドするC言語のファイル名を入力する。複数ある場合は改行して入力。
こんなところだと思います。
例として千景さんのCMakeLists.txtを掲載しておきますので参考にしてください。
cmake_minimum_required(VERSION 3.31.6)
project(gomamayo)
add_executable(gomamayo
src/demo.c
)
target_include_directories(gomamayo PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
友人からプログラムはsrcフォルダ内に置いておくと聞いたのでその通りにしてます。
srcフォルダ内にあるdemo.cの中身は
#include <stdio.h>
int main(void){
printf("Hello,World!\n");
return 0;
}
このようになっています。
ホームディレクトリから見たファイル構造がこんな感じになっていれば準備完了です。

それでは実際にビルドしていきましょう。
ビルドは
cd build
cmake ..
make
./a.out #ここはCMakeLists.txt内のadd_executableに対応したやつ
千景さんの場合ここが
./gomamayo
になります。
これでビルドされたプログラムが実行されたら成功です。
そういえばCMakeってC++のファイルもビルドできるんですね。便利
おまけ 必ず必要ではないけどあると便利なパッケージのインストール
ここで、CMakeの環境を整えるためにあると便利なパッケージをインストールします。
Tree というパッケージなのですが、これはターミナル上に今いるディレクトリより下のファイル階層を分かりやすく表示できるやつです。
sudo apt install tree
この記事でも何度か使いましたね。超便利です。
基本的にWSLはWindows側のエクスプローラーからファイルを確認することはできますが、いちいち確認するのがめんどくさい人やターミナルのみで完結させたい人にはおススメです。
おしまい!


