windows环境cmake引用boost库

这篇具有很好参考价值的文章主要介绍了windows环境cmake引用boost库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称。
Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。

boost库在linux环境的使用很简单,特别是ubuntu和cenntos这种分发版,软件仓库有专门的deb或rpm包,这里linux环境我们只提一句,不细讲了。


一、下载源代码

直接到官方网站去下载源代码就行了,选择你需要的版本即可。
Boost官网
这个需要点击Download找到需要的版本,官网不仅有Boost的源代码,还有Document和Example可以参考。如果你不想麻烦去找,下面给一个版本集合,选择合适的即可。
版本集合
windows环境cmake引用boost库
选择需要的版本,比如1.71.0(Ubuntu-20.04的默认版本)
windows环境cmake引用boost库

点source进去,找到zip或tar都行,建议windows环境下载zip最佳。
windows环境cmake引用boost库

.json里面是验证串,你首先必须保证下载下来的zip是完整的。

二、编译前准备

这里我们的方式是通过gcc编译,然后通过cmake直接引用;还有一种方法是Virtual Studio 引用(不是这篇文章讲的),由于两种方法差别比较大,所以我只说我的环境。

1.操作系统

我使用的是Windows11,理论上Windows10也是可以的,但是我手上没有Win10环境,希望大家自行测试。Windows7应该也可以,不过身边完全找不到Win7环境了,我也不想装虚拟机什么的,希望大家最大限度和我的环境保持一致吧。

2.gcc环境

我安装的Clion-2022.2.4环境里面自带这个工具链,大家可以效仿我安装Clion,然后配置下环境变量就行了。当然自己安装环境也是可以的,mingw和cygwin都行;这里就不说怎么安装了,不会的搜索下就行了。
下面是我的环境截图:
windows环境cmake引用boost库
这个是安装Clion内置的mingw环境,只需要配置个环境变量就行了。
windows环境cmake引用boost库

3.建立安装目录

最好提前准备个目标目录,用来存放编译好的库。
D:\Work\C++_libs\boost_1_71_0\boost_build

三、开始编译

1.解压源代码

解压源代码到一个不小于5G的存储空间用来存放编译产生的中间文件。这里以1.71.0版本为例:
windows环境cmake引用boost库
这是没编译前的目录结构,打开一个命令行进入到这个目录。我使用的是Terminal,你可以使用PowerShell,但我不保证CMD也行。

2.开始编译

先进到Boost的根目录(上面展示的那个),依次执行下面的命令:

cd ./tools/build
./bootstrap.bat
#等待执行完成

如果没有报错的话(一般不会报错),目录下会生成一个b2.exe程序,官方的说法是加入到环境变量里面去,这里我们不加环境变量,直接使用全路径导航。
记得上面我定义的安装目录吗?D:\Work\C++_libs\boost_1_71_0\boost_build,这个是我的目录,你需要自己创建一个目录,最好不要有空格
这个时候你退到Boost的根目录(不是tools/build),完成之后执行下面的命令:

#--prefix=<你的安装目录>
.\tools\build\b2.exe --prefix=D:\Work\C++_libs\boost_1_65_1\boost_build toolset=gcc install

很好,编译需要十来分钟吧,主要取决于你的配置

四、开始使用

如果一切顺利(我基本没报过错),你的库就被安装到指定的目录了。你的目录结构大致相当于下面的结构:
windows环境cmake引用boost库
windows环境cmake引用boost库
windows环境cmake引用boost库
我这里用的静态库,你也可以编译动态库,根据个人喜好吧。这都不是重点,重点是怎么在Clion里面引用Boost。这个跟在Ubuntu里面引用有一些差别,准确来说没有Ubuntu直接安装的方便。

1.Clion创建项目

必须使用C++11以上的版本,这里就用C++11吧。请看下面的配置:

cmake_minimum_required(VERSION 3.23)
project(Class28)

set(CMAKE_CXX_STANDARD 11)
set(BOOST_ROOT "D:\\Work\\C++_libs\\boost_1_71_0")    # 指定Boost库的根目录
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_ARCHITECTURE "-x64")    # 指定库架构为x64
find_package(Boost COMPONENTS atomic REQUIRED)    # 查找Boost库

include_directories(${Boost_INCLUDE_DIRS})    # 包含Boost库的头文件目录

MESSAGE(STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}")
MESSAGE(STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}")
MESSAGE(STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}")

add_executable(Class28 main.cpp)
target_link_libraries(Class28 ${Boost_LIBRARIES})    # 链接Boost库

我用的编译环境是x86_64,所以我指定了Boost_ARCHITECTURE ,如果你是x86的环境,理论上你编译出来的库应该是x86的,而不是像我一样有两个版本(x86和x86_64)。

x86_64向下兼容x86,而x86不能运行x86_64编译出来的软件,这一点很重要!

如果cmake成功了,你应该可以看到跟我一样的正确提示。
windows环境cmake引用boost库

2.Boost版本差异

这里多提一句,Boost这个库对C++来讲很重要,它本身也是在往前面发展的。不同版本的库可能组件是不一样的,比如我用的1.82.0里面有json组件,然而1.71.0里面没有这个组件,直接引用会报错。这种问题还有很多,你可以参考官方文档看下组件的情况。

这里我给出一种比较笨的解决方法:就拿json这个组件来说,如果你直接在CMakeLists.txt里面引用,cmake构建的时候会直接报错,导致不能进入下一步,也就是编译。

find_package(Boost COMPONENTS json REQUIRED)    # 查找Boost库

windows环境cmake引用boost库
这个错误的意思是找不到这个组件,我们去库里面看看。对比下1.71.0和1.82.0发现,1.71.0确实没有这个组件。那么怎么办呢?方法其实很多种,最简单的就是使用第三方的jsoncpp,我就是这么使用的。

不要过度依赖boost

3.Boost版本适配

有时候程序员会有一个避不开的问题,或许你要用boost的新版本,却又发现有些东西不适配旧代码,这个办法也是有的。当然目前除了组件缺失,我没有遇到这种情况。

#if BOOST_VERSION >= 108200
    cout << "1.82.0" << endl;
#include <boost/json.hpp>
#elif BOOST_VERSION >= 107100
    cout << "1.71.0" << endl;
#elif BOOST_VERSION >= 106510
    cout<<"1.65.1"<<endl;
#endif

BOOST_VERSION 这个宏在<boost/version.hpp>里面,每个boost版本必带。主要有两个字段:
windows环境cmake引用boost库
通过判断BOOST_VERSION 就可以做版本适配了。


总结

1、整个过程没有遇到什么错误,一气呵成。
2、如果有疑问,或者报错可以评论,我看到后会帮助你解决的。文章来源地址https://www.toymoban.com/news/detail-493227.html

到了这里,关于windows环境cmake引用boost库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows环境利用QT+CMake编译mingw版本的opencv

    Opencv官网没有提供mingw版本的opencv库,所以需要自己编译,下面是编译过程,32位64位方法类似。 可以直接下载编译好的mingw版本opencv4.4: 使用CMAKE3.22+QT5.13编译后的opencv4.4(32位的)资源-CSDN文库 如果网络不好,可能会需要自己手动下载下面的文件:  opencv_videoio_ffmpeg.dll+ope

    2024年02月13日
    浏览(47)
  • LVGL学习笔记|Windows环境下模拟LittlevGL:VSCode+MSYS2+Cmake搭建模拟环境

    最近需要使用LittlevGL(以下简称lvgl)做ARM开发板的GUI,为了方便调试代码在网上搜集了部分在Windows环境下利用VSCode模拟仿真的环境配置步骤,现整理如下。 系统版本:Windows 10 专业版 21H2 直接使用国内镜像下载链接 : https://vscode.cdn.azure.cn/stable/b4c1bd0a9b03c749ea011b06c6d2676c8091

    2024年02月02日
    浏览(43)
  • Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异)

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vs studio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vs code下

    2024年02月02日
    浏览(64)
  • windows下qt creator 配置编译环境gcc,g++,gdb,cmake

    MSVC :即Microsoft Visual C++ Compiler,即微软自己的编译器 MinGW :我们都知道GNU在Linux下面鼎鼎大名的gcc/g++,MinGW则是指Minimalist GNU for Windows的缩写 这里我们选择MinGW,至于Qt中,这两种模式的区别,自行查阅相关资料 在Qt 安装完成之后,gcc.exe,g++.exe,qmake.exe就已经有了,我们可

    2024年02月09日
    浏览(51)
  • Window中,Visual Studio 2022(C++)环境下安装OpenCV教程(不用Cmake版本)

    本教程主要为了方便小白安装C++版本的OpenCV。 1. 第一步:下载官方OpenCV 下载后,在本地安装即可,注意记住安装路径,后续需要! 2. 配置系统环境变量,Path中,新增变量。即opencv安装的路径,选到opencv中build/x64/vc15/bin 3. 安装visual studio 2022,官网 直接,按照C++配置安装即可

    2024年02月11日
    浏览(61)
  • Windows下基于VSCode搭建C++开发环境(包含整合MinGW64、CMake的详细流程)

    最近想写写C++,装了VisualStudio 2022,折腾半天。对于一个用惯VSCode的人来说,总感觉IDE太笨重。于是自己网上各种查资料,自己琢磨,搭建了一套Windows下基于VSCode和CMake的C++轻量级开发环境。 1. 下载并安装VSCode VSCode下载地址(AzureCDN加速地址) 首先同意安装协议: 下一步,

    2024年02月15日
    浏览(65)
  • OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法

    最近在windows下面用cmake编译OpenCV的项目代码,但是一直碰到找不到mutex的问题,百思不得其解, 查看stackoverfow里面有提到,mingw64有个POSIX的东西,觉得可以一试,就到github上重新下载mingw64 Releases · niXman/mingw-builds-binaries · GitHub  选择x86_64-12.2.0-release-posix-seh-ucrt-rt_v10-rev2.7z版本,重

    2024年02月11日
    浏览(53)
  • CMake引用QT、CMake构建一个转换为3d tile的开源代码

    在CMake里单独运行一下  find_package(Qt5     REQUIRED    COMPONENTS Core Xml Test) ,Core Xml Test 这三个是需要的qt组件; 情况如下;提示找不到QT; 根据资料,cmake引用qt需要3-4个方面,     首先Qt包含三个编译工具:moc、uic、rcc, moc:元对象编译器(Meta Object Compiler),用来处理带有

    2024年02月05日
    浏览(35)
  • 一篇文章搞懂CMake(gcc、g++、cmake解释)

    gcc命令来自英文词组“GNU Compiler Collection”的缩写,其功能是用于C/C++语言编译器。原文链接:https://www.linuxcool.com/gcc GCC 的编译流程包括以下几个阶段: 预处理(Preprocessing):对源代码进行宏替换、头文件展开等操作,生成预处理文件(.i 文件)。 编译(Compilation):将预处

    2024年02月08日
    浏览(36)
  • cmake find_package、引用GDAL 初步学习

    上次的源码的CMakeLists.txt文件里有 find_package(GDAL REQUIRED) 这句; 从字面意思看此源码需要GDAL库; 查了一下,find_package 指令的基本功能是查找第三方库,并返回其细节;   我当前GDAL安装在D:GDAL; 先把它的CMakeLists.txt重命名为别的,不使用; 新建一个CMakeLists.txt,里面有三句

    2024年02月06日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包