web-dev-qa-db-ja.com

CMakeでGLib2を使用するための推奨される方法は何ですか

ビルドシステムとしてCMakeを使用するCアプリケーションでGLibを使用したいと思います。

今、CMakeLists.txtでGLibを有効にする方法がどういうわけか混乱しています。基本的に、find_packageコマンドを使用してcmakeにライブラリを追加するので、 this bugreportに従って試してみました

find_package(GLib2)

しかし、何も見つかりません。一方、GLibのドキュメントでは、pkg-configを使用することをお勧めします。

Cmakeベースのプロジェクトでglibを有効にするための推奨される方法は何ですか?

12
marmistrz

GTKでCMakeを使用する に関する私の答えを見てください

それはGLibとほとんど同じです。

3
liberforce

CMake 3.4(2016年7月にリリース)以降、pkg_check_modulesIMPORTED_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という名前を使用しました)

7
Ivan

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})
4
bleater

GLib(およびautotoolsを使用する他のさまざまなCライブラリ)は、以下を宣言するためのpkg-configファイルを提供します。

  • コンパイラフラグ
  • リンカフラグ
  • ビルド時変数
  • 依存関係

これらのライブラリがCMakeでどこにあるかを発見する適切な方法は、FindPkgConfigCMakeモジュールを使用することです。

https://cmake.org/cmake/help/v3.0/module/FindPkgConfig.html

2
ebassi

私はあなたが試してみたいと思うかもしれないいくつかの GNOME用のCMakeモジュールGLib用のもの を含む)に取り組んできました。基本的には、find_package(GLib)だけで、インポートされたglib-2.0ターゲットを使用してリンクできます。

1
nemequ

さらに別のバージョン、複数の回答の組み合わせ、および実際に私のために働いたもの(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})
0
Barmaley