ビルドシステムとしてCMakeを使用するCアプリケーションでGLibを使用したいと思います。
今、CMakeLists.txtでGLibを有効にする方法がどういうわけか混乱しています。基本的に、find_package
コマンドを使用してcmakeにライブラリを追加するので、 this bugreportに従って試してみました
find_package(GLib2)
しかし、何も見つかりません。一方、GLibのドキュメントでは、pkg-config
を使用することをお勧めします。
Cmakeベースのプロジェクトでglibを有効にするための推奨される方法は何ですか?
GTKでCMakeを使用する に関する私の答えを見てください
それはGLibとほとんど同じです。
CMake 3.4(2016年7月にリリース)以降、pkg_check_modules
はIMPORTED_TARGET
引数をサポートし、依存関係の構成を単一のtarget_link_libraries
ステートメントに減らします。これにより、必要なすべてのコンパイラーとリンカーのオプションが処理されます。
find_package(PkgConfig REQUIRED)
pkg_check_modules(deps REQUIRED IMPORTED_TARGET gtk+-3.0)
target_link_libraries(target PkgConfig::deps)
(上記では、1つのpkg_check_modules
ステートメントで複数の依存関係を一覧表示できるため、deps
という名前を使用しました)
CMakeLists.txt内:
find_package(PkgConfig REQUIRED)
pkg_search_module(GLIB REQUIRED glib-2.0)
target_include_directories(mytarget PRIVATE ${GLIB_INCLUDE_DIRS})
target_link_libraries(mytarget INTERFACE ${GLIB_LDFLAGS})
GLib(およびautotoolsを使用する他のさまざまなCライブラリ)は、以下を宣言するためのpkg-configファイルを提供します。
これらのライブラリがCMakeでどこにあるかを発見する適切な方法は、FindPkgConfig
CMakeモジュールを使用することです。
私はあなたが試してみたいと思うかもしれないいくつかの GNOME用のCMakeモジュール ( GLib用のもの を含む)に取り組んできました。基本的には、find_package(GLib)
だけで、インポートされたglib-2.0
ターゲットを使用してリンクできます。
さらに別のバージョン、複数の回答の組み合わせ、および実際に私のために働いたもの(Linux上)!
cmake_minimum_required(VERSION 2.6.4)
project(my_proj)
find_package(PkgConfig REQUIRED)
pkg_search_module(GLIB REQUIRED glib-2.0)
include_directories(${GLIB_INCLUDE_DIRS})
link_directories(${GLIB_LIBRARY_DIRS})
add_executable(my_proj main.c)
add_definitions(${GLIB_CFLAGS_OTHER})
target_link_libraries(my_proj ${GLIB_LIBRARIES})