スポンサーリンク

ビルドシステムのNinjaでC++のソースコードをビルドしてみる

ninjaはビルドシステムの一つで、makeの仲間。高速なのが取り柄らしい。makeはmakefileを作成してビルドするのに対して、ninjaは.ninjaファイルを作成してビルドする。ただし、.ninjaはcmakeで作ることを想定している。

準備(ninjaの導入)

ninjaは以下URLから環境にあったものをダウンロード、展開する。今回はwindowsなのでninja-win.zipをダウンロードする。

https://github.com/ninja-build/ninja/releases

ninjaを呼び出せるように、ninja.exeへのパスをPathに追加しておく。

作り方

ソースコードの準備

CMakeLists.txt

# CMakeのバージョンを設定 今自分が使っているものを指定している
# 必須要件なので、数字は小さい方がいい。
cmake_minimum_required(VERSION 3.25)

#############################################
#############################################

# ソリューション名を設定
set(MY_SOLUTION_NAME "MySolution")

#プロジェクト名を設定
set(MY_PROJECT_NAME "MyProject")

# 出力ファイル名を設定
set(MY_OUTPUT_NAME "myout")

#############################################
#############################################

# ソリューションを作成
# プロジェクト名と使用する言語を設定
project(${MY_SOLUTION_NAME} CXX)

#############################################
#############################################


# プロジェクトを作成
# out.exeという実行ファイルをmain.cppから作成
add_executable(${MY_PROJECT_NAME} main.cpp )

#############################################
#############################################


#############################################
#############################################

set_target_properties(${MY_PROJECT_NAME} PROPERTIES OUTPUT_NAME ${MY_OUTPUT_NAME})

main.cpp

#include <cstdio>

int main(int argc,char** argv){
	printf("hello world\n");
}

VC++を使える環境でcmake-guiを起動

ninjaは内部で有効なコンパイラを呼び出すので、それらを使用できる環境が必要になる。

今回は、Visual Studio 2022の環境でビルドするため、Visual Studioが動く環境を用意する。

そこでまず、x64 Native Tools Command Prompt for VS 2022 を実行する。

これで、nmakeやcl.exeを使える環境となる。

この状態で、cmake-guiを起動

>C:\Software\cmake-3.25.0-rc2-windows-x86_64\bin\cmake-gui.exe

 

Generateすると、Where to build the binariesにbuild.ninjaが出来上がる。

    
D:\myDevelop\project\test\
│
├─solution
│  │  build.ninja         ... ninjaファイル
│  │  CMakeCache.txt
│  │  cmake_install.cmake
│  │
│  └─CMakeFiles
│
└─src
        CMakeLists.txt      ... CMakeLists.txt
        function.cpp        ... ソースコード
        main.cpp
        source.hpp
    
>d:
>cd D:\myDevelop\project\test\solution
D:\myDevelop\project\test\solution>

カレントディレクトリにbuild.ninjaがある状態で、ninjaコマンドを実行する。

>ninja
[1/3] Building CXX object CMakeFiles\MyProject.dir\function.cpp.obj
...
[2/3] Building CXX object CMakeFiles\MyProject.dir\main.cpp.obj
...
[3/3] Linking CXX executable myout.exe

これでmyout.exeが作成された。

余談

予約投稿してなかった。タヒにたい。確定申告のせいだ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: