CMake コマンド集のページ

2021.12.11 | Taka Kondo's personal command memos:   Linux   ROOT   C++   html   Perl   Python   git   TWiki   SVN   TeX   shell   vi   emacs |
link to: 勝手に作るCmake入門 | 1日で理解するCmake | Simplified CMake Tutorial
CMakeとは?C, C++, CUDA, Fortran, assemblerなどのプロジェクトのビルドをコンパイラに依存せず自動化するためのツール
CMakeLists.txtCMakeのための設定ファイル: cmake_minimum_required(VERSION 3.1), project(hello_worldプロジェクト名 CXX言語), ターゲットadd_executable(main_app実行ファイル名 main.cppソース)
dd_executable(main_app main.cpp my_class1.cpp my_class2.cpp) 複数ソースのとき
versioncmake --version , CMakeLists.txtのtopにcmake_minimum_required(VERSION 3.1)、lxplusでは lsetup cmake
ConfigureCMakeに実行させてビルドに必要な情報を収集する作業。
GenerateConfigureで集めた情報を基に自分の開発環境に合わせたプロジェクトファイルを生成する作業。 cmake --helpで可能なGenerator listが出る。*(defaultを示す) Unix Makefiles = Generates standard UNIX makefiles
build/作業用のディレクトリ ここから@cmake ..を実行する。-- Configuring done、-- Generating doneなら成功。するとMakefile, cmake_install.cmake, CMakeFiles/, CMakeCache.txtが出来る。
ビルド(実行ファイル作成)Acmake --build .でXXX_app*(実行ファイル)が作られる。単にmakeでもいいみたい。
add_executableCMakeLists.txtで最も中心的な関数。例:add_executable(hello main.cpp src/Blah.cpp)
target_include...hファイルなどを入れるためかしら。 target_include_directories(hello PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)  
add_library()CMakeLists.txtで最も中心的な関数。add_subdirectory(blah)でつくったtarget名blahLIBをtarget_link_libraries(hello3 PUBLIC blahLIB)と取り込む。subdirectoryの中でもadd_library(blohLIB,STATIC,Bloh.cpp)を含むCMAkeLists.txtを作っておくこと。階層化だな。
message("...")printfと同じ。message("project name is automaically set as: ${PROJECT_NAME}")
階層化uftree/というsubdirectoryに、もう一つのCMakeLists.txt,include/,src/をおく。
動的リンク(dynamic linking)リンクが不完全な実行ファイルを作成しておいて実行時にリンクを行う。Linuxではlib*.so
動的読み込み自分のソースコードの中で明示的に「xxxという名前の動的リンクライブラリの中のyyyという関数を呼び出す」という風に記述しておきます。 こうすることでライブラリファイルを後付けで動的リンクさせることができます。
動的リンク(dynamic linking)リンクが不完全な実行ファイルを作成しておいて実行時にリンクを行う。Linuxではlib*.so
動的読み込み自分のソースコードの中で明示的に「xxxという名前の動的リンクライブラリの中のyyyという関数を呼び出す」という風に記述しておきます。 こうすることでライブラリファイルを後付けで動的リンクさせることができます
キャッシュ変数set( CACHE )の構文で宣言。typeにはBOOL, PATH, FILEPATH, STRING, INTERNAL, UNINITIALIZEDがある。次回以降Configureするときにも引き継がれます(CMakeCache.txtの中にある)。INTERNALを指定するとccmakeやcmake-guiに表示されなくなる。変更はcmake .. -D=で(例cmake .. -DMY_VARIABLE_B="fugafuga")。 cmake .. -LHで変数の値を見れる。
ccmakeキャッシュcache(貯蔵所)変数の値を操作 ccmake .. -G"Unix Makefiles"でgeneratorを指定。ccmake ..で画面が立ち上がるので、変更できる。
ビルドタイプの設定CMAKE_BUILD_TYPE Makefile系ではcmake .. -DCMAKE_BUILD_TYPE=Release
find_package()特定の名前のCMakeスクリプトを探し出し、それを実行するコマンドです。Module, Configの順で探索を行い、目的のスクリプトファイルが見つかったらその中身を実行してコマンドを終了。_FOUNDというCMake変数に0か1が置かれる。
find_package(...REQUIREDfind_package(Boost REQUIRED ..)ライブラリが発見できなかった場合には直ちに処理が停止します。
Librarygcc main.c -I -L -l mylib