CMake で C ファイルのビルド環境をつくる

macOS 環境で CMake を試してみる。

CMake を使用することで環境に依存しないビルドのための作業を自動できる。

具体的にはソースファイルから環境によってことなるビルド構成ファイル(Makefile, Xcode プロジェクト)を作成できる。

https://cmake.org/

関連

CMake インストール

brew 経由でインストールする

$ brew install cmake

インストールされたかを確認する

$ cmake --version
cmake version 3.15.4

テスト用のファイルを用意する

今回は以下のファイルでテストする

main.c

#include <stdio.h>
#include "sub.h"

int main() {
    func();

    return 0;
}

sub.h

#ifndef ___SUB_H_
#define ___SUB_H_

extern void func();

#endif  // ___SUB_H_

sub.c

#include <stdio.h>

void func() {
    printf("this is func.\n");
}

CMakeList.txt

cmake_minimum_required(VERSION 3.1)       # 要求する最低限の CMake バージョン
project(test C)     # プロジェクト名とプログラミング言語の指定
add_executable(test_app main.c sub.c)   # 実行ファイル名とソースファイルの指定

CMake を実行する

ビルド用のフォルダを作成する。

$ mkdir build

この時点でフォルダ構成はこうなっている。

  • フォルダ
    • CMakeLists.txt
    • main.c
    • sub.h
    • sub.c
    • build/


先ほど作成した build フォルダに移動して CMake を実行する。
cmake .. は上の階層にある CMakeLists.txt を参照することを意味する。

$ cd build
$ cmake ..

成功すると build フォルダ内に CMake の成果物ができる。
私の環境の場合は Makefile ができた。


もし Xcode のプロジェクトファイルを生成したい場合は以下にする。

$ cmake .. -G Xcode

これで xcodeproj が生成される。