2018-06-02 cmake 的 pkg-config 使用问题。
由于历史的原因, 不是所有库都有相关的 **.cmake 文件, 因此不能用 find_package 函数。有的时候需要通过 pkg-config 工具实现。 如下例的使用.
1 |
|
其中
1 |
|
是为了增加 cmake 的 pkg-config 模块, 并由 pkg-config 提供 pkg_check_modules 和 pkg_search_modules 函数来实现相关功能。 find_package 是由 cmake 提供的函数, 由该函数提供加载外部的包(当然也包括外部库)。其用法如下:
1 |
|
他通过下列的函数进行反馈。 ```cmake-变量描述 ${PACKAGE_FOUND} # 反馈是否找到了相关的包或库。 ${PACKAGE_EXECUTABLE} # 返回 package的路径。 ${PACKAGE_VERSION_STRING} # 返回 package 的本版信息。
由 pkg-config 模块提供的 pkg_check_modules 模块, 实现了其中类似 find_package 函数的功能。下面就简单介绍下: ```cmake pkg_check_modules( [REQUIRED] [QUIET] [NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH] [] ...) pkg_check_modules 是通过下列的一些变量返回信息。
1
2
3
4
5
6
7
8
<PREFIX>_FOUND # 返回是否找到 package
<PREFIX>_LIBRARIES # 返回 package 的名称, 可以用到 ld 上 -lpackage
<PREFIX>_LIBRARY_DIRS # 返回 package 的库名文件夹名, 可以用于 ld 戓 gcc 的 -L 标记。
<PREFIX>_LDFLAGS # 返回所有的连接的必要标记。
<PREFIX>_LDFLAGS_OTHER # 返回其它的连接标记
<PREFIX>_INCLUDE_DIRS # 返回头文件所在文件夹, 可以用在 gcc -I 标记后。
<PREFIX>_CFLAGS # 返回所有必要的 CFLAGS。
<PREFIX>_CFLAGS_OTHER # 返回其它的 CFLAGS。
有一些特殊的变量前缀依赖给出的模块数。当仅有一个模块给出时, 保持不变。当有多个模块时,前缀将变为 _ 。如下:
1
pkg_check_modules (FOO glib-2.0>=2.10 gtk+-2.0)
请求 glib2 和 gtk2, 会定义出如下变量 ${ FOO_glib-2.0_VERSION} 其值为 2.10.3 和 ${ FOO_gtk+-2.0_VERSION} 其值为 2.8 等。FOO_glib-2.0_LIBRARIES=glib2-0;**
和 FOO_glib_STATIC_LIBRARIES=**;**
2018-06-02 cmake 的 pkg-config 使用问题。
https://www.supermew.top/2018/06/02/cmake-的-pkg-config-使用问题。/