在用pkg-config可以用来自动查找对应库的include和lib文件,方便编译。它主要通过PKG_CONFIG_PATH和/usr/lib/pkgconfig目录下的.pc文件进行自动配置。在cmake中可以用pkg_search_moudle()来调用pkg-config。
Mac下默认没有opengl对应的.pc配置文件,不能直接在cmakce里使用
pkg_search_module(GL REQUIRED gl)
来找到gl.h等文件。
这里用Homebrew安装mesa来解决该问题:
(方法引自:http://pointclouds.org/documentation/tutorials/compiling_pcl_posix.php#compiling-pcl-posix的Troubleshooting部分)
brew cask install xquartz
brew install mesalib-glw
这样就在/opt/X11/lib/pkgconfig中加入了gl.pc和glu.pc文件
如果在cmake里配置,那么可以写为
set(ENV{PKG_CONFIG_PATH} /opt/X11/lib/pkgconfig)
pkg_search_module(GL REQUIRED gl)
pkg_search_module(GLU REQUIRED glu)
BTW: 我在CLion中编译项目,但CLion自带的cmake不会主动清理缓存,这使新的pkg-config配置无效,可以点击Tools->CMake->Reset Cache and Reload Project来达到清理cmake缓存的目的。