1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CMake備忘録

Last updated at Posted at 2023-08-06

Cmake概要

CMakeLists.txtの作成からBuildまでの流れ。各種Cmakeのコマンドは コマンド一覧 を参照。

CMakeLists.txt

CMakeLists.txtにbuild内容を記述する。

CMakeLists.txt
# CMakeのバージョンを設定
cmake_minimum_required(VERSION 3.20)
# プロジェクト名と使用する言語を設定
project(test_cmake C)
#build
add_executable(test main.c)
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の最小バージョンを指定する。

CMakeLists.txt
# CMakeのバージョンを指定。下記例は最小バージョンは3.23
cmake_minimum_required(VERSION 3.23)

一覧へ戻る

project

project(XXX CXX)
プロジェクト名 XXX。 C言語ならC C++ならCXX

CMakeLists.txt
#Cなら
project(TEST_PROJECT C)
#C++なら
project(TEST_PROJECT CXX)

一覧へ戻る

add_executable

add_executable(xxx yyy.c)
yyy.cをBUildして 実行ファイルxxx とする。

CMakeLists.txt
#main.cをbuildして、 test.extとして出力する。
add_executable(test main.c)

一覧へ戻る

add_subdirectory

add_subdirectory(xxx)
xxx フォルダのを追加。 CMakeLists.txt を実行

CMakeLists.txt
#./folderA/folderBのパス追加
add_subdirectory(./folderA/folderB)

一覧へ戻る

include_directories

include_directories(xxx)
xxx のインクルードパスを追加。

CMakeLists.txt
#./folderA/folderBのパス追加
include_directories(./folderA/folderB)

一覧へ戻る

link_directories

link_directories(xxx)
xxx ライブラリのパスを追加。

CMakeLists.txt
#./libのパス追加
link_directories(./lib)

一覧へ戻る

add_compile_definitions

add_compile_definitions(xxx)
コンパイル定義にxxxを追加

CMakeLists.txt
# DEF_Aの定義を設定
add_compile_definitions(DEF_A)

一覧へ戻る

add_library

add_library(lib xxx)
xxx からライブラリlibを生成する。

CMakeLists.txt
#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をリンクする。

CMakeLists.txt
target_link_libraries(test lib_a lib_b)

一覧へ戻る

set

set(xxx yyy)
xxxの変数にyyyを代入。変数は${xxx}で呼び出し。

CMakeLists.txt
#./folderA/folderBのパスを変数FOLDER_PATHにする
set(FOLDER_PATH ./folderA/folderB)

#${FOLDER_PATH}のフォルダを追加
add_subdirectory(${FOLDER_PATH})

一覧へ戻る

message

message("xxx")
xxx について、コンソール画面にメッセージとして出力する。

CMakeLists.txt
message("cmakeを実行しました。")

#setしたデータを出力する。
set(FOLDER_PATH ./folderA/folderB)
message(${FOLDER_PATH})

一覧へ戻る

GDBオプション

GDBを設定するオプション。

CMakeLists.txt
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0")

一覧へ戻る

gcovの設定

gcovのための作法。

CMakeLists.txt
#実行ファイル testのgcov設定
target_compile_options(test PUBLIC -coverage)
target_link_options(test PUBLIC -coverage)

一覧へ戻る

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?