サーチ…


構文

  • find_package(pkgname [バージョン] [EXACT] [QUIET] [REQUIRED])
  • インクルード(FindPkgConfig)
  • pkg_search_module(接頭辞[必須] [QUIET] pkgname [otherpkg ...])
  • pkg_check_modules(接頭辞[必須] [QUIET] pkgname [otherpkg ...])

パラメーター

パラメータ 詳細
バージョン(オプション) major.minor.patch.tweakの形式で、メジャー番号とオプションでマイナー、パッチ、調整番号で定義されたパッケージの最小バージョン
EXACT(オプション) versionで指定されたversionが見つかる正確なバージョンであることを指定します。
必須(オプション) パッケージが見つからない場合は自動的にエラーをスローし、プロセスを停止します。
QUIET(オプション) この関数は、標準出力にメッセージを送信しません

備考

  • find_package方法はすべてのプラットフォームで互換性がありますが、 pkg-configはLinuxやOSXのようなUnixライクなプラットフォームでのみ利用できます。

  • find_package多くのパラメータとオプションの詳細な説明は、 find_package記載されています

  • パッケージのバージョンなどの多くのオプションパラメータを指定することはできますが、すべてのFindモジュールがこれらのパラメータをすべて適切に使用するわけではありません。未定義の動作が発生した場合は、CMakeのインストールパスでモジュールを見つけて、その動作を修正または理解する必要があります。

find_packageとFindを使用する .cmakeモジュール

インストールされたパッケージをCMakeで見つけるためのデフォルトの方法は、 find_package関数をFind<package>.cmakeファイルとともに使用することです。このファイルの目的は、パッケージの検索ルールを定義し、 <package>_FOUND<package>_INCLUDE_DIRS 、および<package>_LIBRARIESなどの異なる変数を設定することです。

多くのFind<package>.cmakeファイルは、CMakeでデフォルトで既に定義されています。ただし、必要なパッケージのファイルがない場合は、自分で作成して${CMAKE_SOURCE_DIR}/cmake/modules (またはCMAKE_MODULE_PATHが上書きされた場合は他のディレクトリ)

デフォルトモジュールのリストは、 マニュアル(v3.6)にあります。プロジェクトで使用されているCMakeのバージョンに従ってマニュアルをチェックすることが不可欠です。そうしないと、モジュールが不足している可能性があります。 cmake --help-module-listを使ってインストールされたモジュールを見つけることも可能です。

Github上のFindSDL2.cmake良い例があります

CMakeLists.txtが必要な基本的なCMakeLists.txtは次のとおりです。

cmake_minimum_required(2.8 FATAL_ERROR)
project("SDL2Test")

set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules")
find_package(SDL2 REQUIRED)

include_directories(${SDL2_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} main.c)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})

pkg_search_moduleとpkg_check_modulesを使用する

Unixライクなオペレーティングシステムでは、 pkg-configプログラムを使用して、 <package>.pcファイルを提供するパッケージを見つけて設定することができます。

pkg-configを使用するには、 CMakeLists.txt include(FindPkgConfig)を呼び出す必要があります。次に、2つの機能があります。

  • pkg_search_module :パッケージをチェックし、最初に利用可能なパッケージを使用します。
  • pkg_check_modulesは、対応するすべてのパッケージをチェックします。

pkg-configを使って2.0.1以上のバージョンのSDL2を見つける基本的なCMakeLists.txtは次のとおりです:

cmake_minimum_required(2.8 FATAL_ERROR)
project("SDL2Test")

include(FindPkgConfig)
pkg_search_module(SDL2 REQUIRED sdl2>=2.0.1)

include_directories(${SDL2_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} main.c)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow