cmakeを学ぼうとすると、良い紹介が見つかりませんでした。 CMakeのドキュメントは非常に包括的ですが、初心者には適していません。 CMake Wikiにリンクされているいくつかの便利なチュートリアルがありますが、それらのほとんどは非常に具体的な問題だけをカバーしているか、基本的すぎ だから私はこの短いCMakeの紹介を、ドキュメントを調べてstackoverflowの質問に従った後に見つけたものの蒸留版として書いた。その進行中の作業と私は継続的にそれを改善しようとします。
CMakeは、さまざまなプラットフォーム用のネイティブビルドスクリプトを生成できるメタビルドツールです。
- Unix Makefiles
- Xcode
- Visual Studio
- CodeBlocks
- Eclipse
- その他…
CMakeジェネレータの完全なリストを参照してください。
単一のシンプルなアプリがあると仮定しましょう。cファイル。プロジェクトのルートにCMakeLists.txt
ファイルを作成します。p>
cmake_minimum_required(VERSION 2.8)project(app_project)add_executable(myapp main.c)install(TARGETS myapp DESTINATION bin)
利用可能なジェネレータのいずれかでアプリを構築できるようにするために必要なのはそれだけです。
add_executable
bin
ディレクトリにバイナリをインストールするようにcmakeに指示します。
Building
CMakeはソース外のビルドをサポートしているため、コンパイルされたコードはすべてソースとは別のディレクトリに入ります。
ビルドを開始するには、新しいフォルダを作成します。
mkdir _build
cd _build
プロジェクトのルート(この場合は親フォルダ)へのパスを指定してcmakeを呼び出します。
cmake ..
これは、デフォルトのジェネレータを使用してビルドスクリプトを生成します。Linux/OSXでは、これはMakefileでなければなりません。
デフォルトでは、cmakeはビルドをシステムディレクトリにインストールします。
カスタムインストールディレクトリを定義するには、単にcmakeに渡します。
cmake .. -DCMAKE_INSTALL_PREFIX=../_install
ビルドスクリプトを実行するには、Makefileを使用するだけです:別のジェネレータを使用したい場合は、-G
パラメータを使用してcmakeに渡します。
cmake .. -GXcode
cmake .. -GXcode
cmake .. -GXcode
cmake .. -GXcode
cmake .. -GXcode
cmake .. -GXcode
cmake .. -GXcode
cmake .. -GXcode
cmake .. -GXcode
cmake .. -GXcode
cmake_minimum_required(VERSION 2.8)project(libtest_project)add_library(test STATIC test.c)install(TARGETS test DESTINATION lib)
install(FILES test.h DESTINATION include)
CMakeはライブラリをlibtest.a
としてビルドし、インストールディレク
また、パブリックヘッダーファイルをインストールステップに含め、cmakeにinclude
に入れるように指示します。
静的ライブラリの代わりに、共有ライブラリも構築できます。
add_library(test SHARED test.c)
ライブラリをCMakeで実行可能ファイルにリンクする
libraylibtest.a
にリンクすることで、実行可能ファイルを上から拡張することができます。
まず、ライブラリのディレクトリをmyappプロジェクトのサブディレクトリとして追加しましょう。これで、CMakeListsで定義されたライブラリを使用できます。myappのCMakeListsのlibtest_projectのtxt。txt:libtestprojectで定義されたライブラリtest
をビルドで使用できるようにします。target_link_libraries
では、CMakeに実行可能ファイルにリンクするように指示します。 CMakeはmyappにリンクする前に最初にテストをビルドします。
他のビルドシステムを使用して外部ライブラリを含む
CMakeの関心が高まっていますが、Unix Makefileのようなネイティブビルドシステムを使用しているライブラリはまだたくさんあります。 ビルドスクリプトを書き直すことなく、CMakeプロジェクトでそれらを使用できます。必要なのは、外部プロジェクトとインポートされたライブラリに対するCMakeのサポートだけです。
ExternalProject_Add(project_luajit
URL http://luajit.org/download/LuaJIT-2.0.1.tar.gz
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/luajit-2.0.1
CONFIGURE_COMMAND ""
BUILD_COMMAND make
INSTALL_COMMAND make install
PREFIX=${CMAKE_CURRENT_BINARY_DIR}/luajit-2.0.1
)ExternalProject_Get_Property(project_luajit install_dir)add_library(luajit STATIC IMPORTED)set_property(TARGET luajit PROPERTY IMPORTED_LOCATION ${install_dir}/lib/libluajit-5.1.a)add_dependencies(luajit project_luajit)add_executable(myapp main.c)include_directories(${install_dir}/include/luajit-2.0)target_link_libraries(myapp luajit)
ExternalProject_Add
BUILD_COMMAND
INSTALL_COMMAND
、CMakeは検索しますCMakeLists.txt
外部プ
私たちの場合は、Makefileを使用して構築されたluajitライブラリを利用したいと思います。p>
add_library
IMPORTED_LOCATION
プロパティを設定するだけです。ExternalProject_Add
add_dependencies
target_link_libraries
でリンクできます。