Cmake概要
CMakeLists.txtの作成からBuildまでの流れ。各種Cmakeのコマンドは コマンド一覧 を参照。
CMakeLists.txt
CMakeLists.txtにbuild内容を記述する。
# CMakeのバージョンを設定
cmake_minimum_required(VERSION 3.20)
# プロジェクト名と使用する言語を設定
project(test_cmake C)
#build
add_executable(test main.c)
#include <stdio.h>
void main(void){
printf("hello world.");
printf("this is sample.");
}
CMake実行
CMakeLists.txtの階層にbuildディレクトリを作成し、build実行する。下記でbuildされ、結果はbuildディレクトリに出力される。
mkdir cmake
cmake ..
cmake --build
#Cleanする場合は
cmake --build . --target clean
CMake実行(Mingwの場合 windows環境)
WindowsでMingwを使う場合は下記コマンドで。WindowsでのCmake環境構築は下記参照。
WindowsでGoogleTestする備忘録。
#./buildフォルダにmakefile作成
cmake -G "MinGW Makefiles" -B build .
#./buildフォルダでbuildを実行
cmake --build build
コマンド一覧
コマンド | 概要 |
---|---|
cmake_minimum_required | 最小バージョンを指定する。 |
project | プロジェクトを指定する。 |
add_executable | ビルド |
add_subdirectory | フォルダ追加 |
include_directories | インクルードパス追加 |
link_directories | ライブラリパス追加 |
add_compile_definitions | コンパイルオプション追加 |
add_library | ライブラリ生成 |
target_link_libraries | ライブラリリンク |
set | 変数設定 |
message | コンソール出力 |
GDBオプション | gcovの設定オプション。 |
gcovの設定 | gcovの設定オプション。 |
cmake_minimum_required
CMakeの最小バージョンを指定する。
# CMakeのバージョンを指定。下記例は最小バージョンは3.23
cmake_minimum_required(VERSION 3.23)
project
project(XXX CXX)
プロジェクト名 XXX。 C言語ならC
C++ならCXX
。
#Cなら
project(TEST_PROJECT C)
#C++なら
project(TEST_PROJECT CXX)
add_executable
add_executable(xxx yyy.c)
yyy.cをBUildして 実行ファイルxxx とする。
#main.cをbuildして、 test.extとして出力する。
add_executable(test main.c)
add_subdirectory
add_subdirectory(xxx)
xxx フォルダのを追加。 CMakeLists.txt を実行
#./folderA/folderBのパス追加
add_subdirectory(./folderA/folderB)
include_directories
include_directories(xxx)
xxx のインクルードパスを追加。
#./folderA/folderBのパス追加
include_directories(./folderA/folderB)
link_directories
link_directories(xxx)
xxx ライブラリのパスを追加。
#./libのパス追加
link_directories(./lib)
add_compile_definitions
add_compile_definitions(xxx)
コンパイル定義にxxxを追加
# DEF_Aの定義を設定
add_compile_definitions(DEF_A)
add_library
add_library(lib xxx)
xxx からライブラリlibを生成する。
#funcA.cからlib_aライブラリを生成
add_library(lib_a funcA.c)
#静的ライブラリの場合
add_library(lib_a STATIC funcA.c)
target_link_libraries
target_link_libraries(xxx lib)
xxxへライブラリlibをリンクする。
target_link_libraries(test lib_a lib_b)
set
set(xxx yyy)
xxxの変数にyyyを代入。変数は${xxx}で呼び出し。
#./folderA/folderBのパスを変数FOLDER_PATHにする
set(FOLDER_PATH ./folderA/folderB)
#${FOLDER_PATH}のフォルダを追加
add_subdirectory(${FOLDER_PATH})
message
message("xxx")
xxx について、コンソール画面にメッセージとして出力する。
message("cmakeを実行しました。")
#setしたデータを出力する。
set(FOLDER_PATH ./folderA/folderB)
message(${FOLDER_PATH})
GDBオプション
GDBを設定するオプション。
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0")
gcovの設定
gcovのための作法。
#実行ファイル testのgcov設定
target_compile_options(test PUBLIC -coverage)
target_link_options(test PUBLIC -coverage)