案例分析 案例由于CMake的find_package有时候会发现使用不便,因此可以考虑使用pkg代替
cmake_minimum_required(VERSION 2.8)
set(APPNAME demo)
project(${APPNAME})
set(ENV{PKG_CONFIG_PATH} /usr/lib/pkgconfig)
find_package(PkgConfig)
pkg_search_module(BSON REQUIRED libbsoncxx)
pkg_search_module(MonGO REQUIRED libmongocxx)
include_directories(app
${BSON_INCLUDE_DIRS}
${MONGO_INCLUDE_DIRS})
aux_source_directory(. DIRSRCS)
# generate application
add_executable(${APPNAME}
${DIRSRCS}
)
# link library to application
target_link_libraries(${APPNAME}
${BSON_LIBRARIES}
${MONGO_LIBRARIES}
)
pkgconfig的使用
set(ENV{PKG_CONFIG_PATH} /usr/lib/pkgconfig)
find_package(PkgConfig)
查找需要使用的第三方库目录
pkg_search_module(BSON REQUIRED libbsoncxx) pkg_search_module(MonGO REQUIRED libmongocxx)
在/usr/local/lib/pkgconfig目录下,可找到我们编译安装好的第三方库配置文件,pkgconfig下的配置为*.pc文件。
比如,我们看到该文件夹下存在libbsoncxx.pc,那么我们可以直接使用,只需要定义pkg_search_module(BSON REQUIRED libbsoncxx),BSON自定义名字即可。
include_directories(app
${BSON_INCLUDE_DIRS}
${MONGO_INCLUDE_DIRS})
头文件的目录格式为${XXX_INCLUDE_DIRS}
链接库target_link_libraries(${APPNAME}
${BSON_LIBRARIES}
${MONGO_LIBRARIES}
)
库文件的目录格式为${XXX_LIBRARIES}



