需要更多色彩的
不是代码,而是生活

CLion配置CMakeLists.txt引入Boost库

find_package

find_package(Boost
  [version] [EXACT]      # 可选项,最小版本或者确切所需版本
  [REQUIRED]             # 可选项,如果找不到所需库,报错
  [COMPONENTS <libs>...] # 所需的库名称,比如说. "date_time" 代表 "libboost_date_time"
  )

运行完后可以得到很多变量,下面列了一些主要的

Boost_FOUND            - 如果找到了所需的库就设为true
Boost_INCLUDE_DIRS     - Boost头文件搜索路径
Boost_LIBRARY_DIRS     - Boost库的链接路径
Boost_LIBRARIES        - Boost库名,用于链接到目标程序
Boost_VERSION          - 从boost/version.hpp文件获取的版本号
Boost_LIB_VERSION      - 某个库的版本

可以在搜索package之前,通过设置一些变量来帮助boost库的查找

BOOST_ROOT             - 首选的Boost安装路径
BOOST_INCLUDEDIR       - 首选的头文件搜索路径 e.g. <prefix>/include
BOOST_LIBRARYDIR       - 首选的库文件搜索路径 e.g. <prefix>/lib
Boost_NO_SYSTEM_PATHS  - 默认是OFF. 如果开启了,则不会搜索用户指定路径之外的路径

如果不设置,会到默认的目录中去寻找,在windows下,BOOST_ROOT默认为 "C:/Boost",BOOST_INCLUDEDIR默认为 "C:/Boost/include"),BOOST_LIBRARYDIR默认为 "C:/Boost/lib"

还要正确配置以下参数才能正确引入库

set(Boost_COMPILER -mgw81)#编译器后缀,将会在引用的库文件名字后加-mgw81
set(Boost_USE_MULTITHREADED ON)#启用多线程,将会在引用的库文件名字后加-mt
set(Boost_USE_STATIC_RUNTIME ON)#静态链接到C++运行库的库,将会在引用的库文件名字后加-s
set(Boost_USE_DEBUG_RUNTIME ON)#引入调试库,将会在引用的库文件名字后加-d,与Boost_USE_STATIC_RUNTIME参数合并为-sd
set(Boost_ARCHITECTURE -x64)#引用x64库,将会在引用的库文件名字后加-x64
set(Boost_USE_STATIC_LIBS ON)#引入静态链接库,对应.a后缀

以下是一个示例

cmake_minimum_required(VERSION 3.13)
project(codezd)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_COMPILER gcc)#设置c语言的编译器为gcc
set(CMAKE_CXX_COMPILER g++)#设置c++语言的编译器为g++

#可以在搜索package之前,通过设置一些变量来帮助boost库的查找
#set(BOOST_ROOT "C:/Boost")#首选的Boost安装路径
#set(BOOST_INCLUDEDIR "C:/Boost/include")#首选的头文件搜索路径
#set(BOOST_LIBRARYDIR "C:/Boost/lib")#首选的库文件搜索路径

#以下参数正确配置才能对应起库的文件名
#在这里,我要引入regex库,我的库文件名字是“libboost_regex-mgw81-mt-sd-x64-1_69.a”
set(Boost_COMPILER -mgw81)#编译器后缀,将会在引用的库文件名字后加-mgw81
set(Boost_USE_MULTITHREADED ON)#启用多线程,将会在引用的库文件名字后加-mt
set(Boost_USE_STATIC_RUNTIME ON)#静态链接到C++运行库的库,将会在引用的库文件名字后加-s
set(Boost_USE_DEBUG_RUNTIME ON)#引入调试库,将会在引用的库文件名字后加-d,与Boost_USE_STATIC_RUNTIME参数合并为-sd
set(Boost_ARCHITECTURE -x64)#引用x64库,将会在引用的库文件名字后加-x64
set(Boost_USE_STATIC_LIBS ON)#引入静态链接库,对应.a后缀

#开启以下三个参数,以便查错
set(Boost_DEBUG ON)
set(Boost_DETAILED_FAILURE_MSG ON)
set(Boost_REALPATH ON)

find_package(Boost REQUIRED COMPONENTS regex)
if(Boost_FOUND)
    #添加头文件搜索路径
    include_directories(${Boost_INCLUDE_DIRS})

    message(STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}.")
    message(STATUS "Boost_LIBRARY_DIRS = ${Boost_LIBRARY_DIRS}.")
    message(STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}.")
    message(STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}.")

    add_executable(test test.cpp)
    target_link_libraries (test ${Boost_LIBRARIES})
else()
    message("Boost Not Found!!!")
endif()

 

赞(2) 打赏
未经允许不得转载:代码一线 » CLion配置CMakeLists.txt引入Boost库
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就支持一下本站

支付宝扫一扫打赏

微信扫一扫打赏