在 Windows 下通过 CMake 使用 Boost 库
来源:http://www.tudoupe.com时间:2022-05-17
有关在 Windows 下使用 BOST 的有好几种出版物, 但其中大多是关于您如何从视觉工作室界面直接操作。 这就是 CMake 项目如何使用 BOST 的 。
这项工作中使用的cmake版本为3.23.01。
下载 Boost
当前启动的下载地址是 : Boost Downloads 最新版本为1.79。 照片来自Flickr用户pic.根据正式介绍的《诱导》,7z 文件比较。 Zip 将是大小的一半,您可以自由地使用它7.7z格式。
博斯特图书馆分为两部分。一个只为头目的,包括头条新闻另一个必须提前建立。推进系统,推进系统等等。汇编分为两类:动态图书馆和静态图书馆。
Windows 中的动态和静态图书馆
让我们首先简要地概述动态和静态银行。
动态库通常只查看 DLL 文件, 它实际上是一个 Lib 文件, 包含.. 两部分, dll. Lib 描述动态库的内容, 当应用程序连接时使用它. dll 是程序运行时要使用的实际库文件 。
连接时, 静态库的内容会与程序连接。 不需要额外文件支持操作。 我将从“ 启动” 汇编开始, 成为一个动态或静态库 。
编译成静态库
Windows上最基本的汇编程序与Linux兼容。
C: 启动程序将用两个文件夹来构建, 包括和 lib 。
该目录包括以下内容:
该目录的内容如下:
每份文件都包含前缀lib, 即静态图书馆。 每个图书馆由四份文件组成, 代表不同的编译选项 :
- vc142 编译器的名称和版本号;
- mt 支持多线程;
- gd 调试版本; 没有发布版本;
- (a) x32/x64 64-位版本或32位数版本;
- 推进版本 1_79;
做一个项目测试。
抱歉, CMakeLists. txt 看起来像这个 :
Regex.cpp, 对不起, 内容如下:
编译并执行
编译动态库
由于我的项目需要64位多线版本,因此采用了下列汇编订单。
注意里面的选项:
- -Layout 写信来定义文件名结构 。版本、标记和系统支持有三个选项。版本的静态库是默认使用默认值编译的 。制作了最全面的档案名称信息。编译者的名称和版本号不包含在标签文件名中 。这是案件vc142。又不是说它没有Boost版本; 它没有Boost版本。本例中为1_79
库名是系统文件最小的名称 。
- 可以是释放,也可以是调试。这既可以是释放,也可以是调试。本例中,因为布局=系统,如果发布版本和调试版本同时编译,文件名字相同,因此,只有一种方法可以汇编。否则会报错。还有其他选择。我看到了B2援助。
- j 有8条线索可供汇编。
- 地址模型不是一个语音模型;它产生64位元版本。
- 动态库链接=共享。
看看编译后的结果
每个图书馆由两个文件组成,其中一个需要连接,另一个需要运行。
在文件名前没有 lib 前缀, 因为它是一个动态库 。
编译我们的例子:
Regex 成功创建了!
蛋糕如何运作?
蛋糕如何决定使用动态或静态图书馆?方法有很多,可以整体设置,图书馆也可以用来建立图书馆。当我从Linux转到Windows时当我们开始构建连接时, 它是不正确的: pub_ system. 找不到Lib 。我们很久没制造助推器了 Lib也被发现了Boost_log-vc142-mt-x64-1-79.Lib也报告未找到。并且他们都用同样的命令加入到项目中。
crke 指定用于连接的库 :
- 找到哪个就用哪个
在没有其他选择的情况下,这是最容易理解的,尽可能与项目中的其他环境相匹配,并找到任何无障碍环境。
至于如何找,许多熟料变体略有不同。尽管如此,C.B.C.发挥了重要的作用然而,并非所有蛋糕都支持这种方法。如果你的蛋糕不支持这个方法,此目录不是通过添加到 b2 -- no- cmake- config 生成的 。
- CMakeLists. txt 配置
创建一个动态库, 可以加入 CMakeLists 。
您可以选择只提供一个库,例如,日志。
CMakeLists提供了广泛的变量。这里列几个例子,值得一提的是,使用 Find_ package 之前必须配置这些选项 。然后,蛋糕将使用这些参数来找到合适的版本。可在促进官员网络上获得更多信息。 Configuring and building the library - 1.79.0 (boost.org)
- 在源代码中设置
这种方式学非常麻烦,只能作为最后一种选择。我不是要引入这种方法来允许你使用它,而是要找出是否有其他人这样做过。
在代码中插入以下语句,将其设置在源代码中:
当然,你可以只拥有一个图书馆。
与运行时间- 链接的区别
强调一下,当我们提到,“泡沫是一个动态的或静态的图书馆。”还有一种想法很容易被误解。运行时连接,它指助推器的组合。编译器使用的库,是否应该将它汇编到“促进”库中。如果包含运行时库,也就是静态方式,对不起,但我不知道 我在说什么。这不是生命的问题,它不是一个生命的问题, 它不是一个生命的问题,它不是一个生命的问题, 它不是一个生命的问题,它不是一个生命的问题,它不是一个生命的问题, 它不是一个生命的问题,它不是一个生命的问题, 它不是一个生命的问题,它不是一个生命的问题,它不是一个生命的问题,它不是一个生命的问题,它不是一个生命的问题,它是一个生命的问题,它是一个生命的问题,它是一个生命的问题,它是一个生命的问题,它不需要其他水库来支撑它们,如果它们不运行,动态运行时方式,建成的助推库通常需要 MSVCRTXX.DLL 和 MSVCPXX. DLL 文件。 只能执行 DLL 文件 。--runtime- link 的 VC 是 b2 的编译器选项 。Multithreaded
或者Multithreaded DLL
考虑到我们汇编了“促进”一词,而且我们很少(如果有的话)在使用“促进”一词时有一个运行中的时间库,因此这个项目被默认,细节留待汇编者处理。
相关新闻
- 2022-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|