cmake使⽤pkg-config配置第三⽅库和头⽂件
今天在编译之前写的⼀个opengl程序时,发现不到glew库,原因是glew库升级了,中find_package( )不到glew库。于是,想到⽤pkg-config的⽅法配置第三⽅库。
pkg-config 就是⼀个命令⼯具,可以查询已安装库的基本信息,包括版本号、库路径、头⽂件路径、编译选项、链接选项等,常⽤命令⾏
查询版本号
pkg-config --modversion glew  # 查询glew版本号
输出:
2.1.0
查询库的基本信息
pkg-config --libs --cflags glew # 获取glew库的基本信息
输出:
-I/usr/local/Cellar/glew/2.1.0_1/include -L/usr/local/Cellar/glew/2.1.0_1/lib -lGLEW
pkg-config是如何到这些信息的呢?其实,我们在安装第三⽅库时,会带有⼀个 .pc⽂件,⽐如glew库,.pc⽂件在本机中位
于/usr/local/Cellar/glew/2.1.0_1/lib/pkgconfig/glew.pc,该⽂件包含了库的基本信息,内容如下:
prefix=/usr/local/Cellar/glew/2.1.0_1
exec_prefix=${prefix}cmake如何使用
libdir=/usr/local/Cellar/glew/2.1.0_1/lib
includedir=${prefix}/include
Name: glew
Description: The OpenGL Extension Wrangler library
Version: 2.1.0
Cflags: -I${includedir}
Libs: -L${libdir} -lGLEW
Requires:
既然第三⽅库已经包含了基本信息,那么直接将这些配置信息应⽤到中即可。具体写法如下:
find_package(PkgConfig)
pkg_search_module(GLEW REQUIRED glew)
MESSAGE(STATUS "glew dirs:" ${GLEW_INCLUDE_DIRS})
MESSAGE(STATUS "glew lib:" ${GLEW_LIBRARIES})
include_directories(${GLEW_INCLUDE_DIRS})
link_directories(${GLEW_LIBRARY_DIRS})
... ...
target_link_libraries(main ${GLUT_LIBRARY} ${OPENGL_LIBRARY} ${GLEW_LIBRARIES})
需要注意的是,以上⽅式获取的变量名与find_package()有所不同。
pkg-config ⽅式
GLEW_INCLUDE_DIRS
GLEW_LIBRARY_DIRS
GLEW_LIBRARIES
find_package( ) ⽅式
GLEW_INCLUDE_DIR GLEW_LIBRARY_DIR GLEW_LIBRARY
reference
1.
2.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。