设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

在Visual Studio构建和配置Boost(MSBuild)

2015-5-4 21:49| 发布者: joejoe0332| 查看: 5155| 评论: 0|原作者: Parser7SParser, 霍啸林, jince, king_dust, gones945, 无若, leoxu|来自: oschina

摘要: Boost 是一个非常流行地开源C++库。最近作为构建的一部分,我已经把它集成在Visual Studio中。仅仅使用Makefile项目和Command Line工具,要想完全正确地配置构建项目还是很困难的。Boost也一直指引着我发现所有相关 ...

引言

Boost 是一个非常流行地开源C++库。最近作为构建的一部分,我已经把它集成在Visual Studio中。仅仅使用Makefile项目和Command Line工具,要想完全正确地配置构建项目还是很困难的。Boost也一直指引着我发现所有相关的知识以及学习如何使用它。这些是分散在多个地方的文档(这里这里, 以及 这里),但是并不是那么浅显易懂。我目前所写的文档就是为了不让其他人浪费很长时间在同样的问题上。


这是有关主题的第三章。在前面两章中,我已经讲了了它的属性和它的语法.。你可以在这里这里阅读。在第四章中,我会解释如何用Visual Studio项目参考系统进行整合,目的是为了Boost也可以像其它的MSBuild 项目那样被人使用。


目的

本章的目的是演示如何使用MSBuild为自定义库和工具创建项目以及整合MSBuild到Visual Studio的配置环境当中。接下来的方面是很重要的。这些工具和库建构起来又是异常复杂。我给你们举个例子:


我们想在最小化的配置下构建Boost,把这些中间文件放到:"c:\Temp\"这个目录并存储这些文件。命令很简单


1
b2 --stagedir="c:\Temp\" --build-type=minimal stage


执行命令的时失败并伴有如下错误:

1
The value of the --build-type option should be either 'complete' or 'minimal'

#$%#什么?!!我们检查命令、拼写等。再试一次…一次又一次…又一次完整的而不是最小的。……仍不行!


失败的原因是--stagedir在路径的结尾有“\”字符!像“C:Temp”这样执行才能成功地构建出库。


1
b2 --stagedir="c:\Temp" --build-type=minimal stage

Visual Studio在发送工具时需要带有斜线的目录来控制,在这种情况下不会正常工作。


因此开发环境的整合并且提供简单的UI能够消除所有的这些应该被消除的无意义的问题。


背景

Boost是一个C++编程语言的库集合。它的大多数库被作为头文件的实现并且不用被编译成二进制文件。包含这些特定的头文件,把他们放入你的工程中,对你的工程来说足够了。但是这些模块需要编译和连接到这些程序才能使之成为一个整体。


Boost使用它自己的Jam build tool作为库编译工具。工具是C++源代码文件的集合,那么任何模块被处理前都是需要编译的。


获得库文件

Boost库可以通过正式的发布来下载也可从GitHub上面复制分支出一份。


所下载的库作为库的存档中被正式发布的一部分,包含了全部的资源、文档和目录,而且可以立即构建。


如何库是在Git上面复制的,在构建的时候可能需要更多的步骤。Boost是结构化的主模块,并且带有一些子模块。


1. 复制 Boost将库文件放到本地。
2. 获取子模块通过更新命令来获取所有的子模块。需要递归地执行
3. 构建Jam工具 Jam解释器“b2.exe”需要使用工具集从源文件中构建,MSVC就是这样。
4. 包含dir的重构

当从文档库中复制库文件时,‘boost’并没有创建文件夹。所有头文件都存储在各自libs的文件夹目录下。这样做是防止‘boost’和‘libs’目录重复。相反,‘boost’目录是通过执行b2.exe headers命令来产生。


只要下载或是复制了库文件,我们就可以开始构建了,最好是设置指向boot库根目录的环境变量BOOST_BUILD_PATH。


项目文件

在MSBuild中的所有项目都是一起启动的,它总是像这样启动:

1
2
3
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

有一些推荐的(但非必须的)配置项, 项目配置(ProjectConfiguration),全局配置(Global),拓展设置(ExtensionSetting), 用户宏(UserMacros),以及拓展目标(ExtensionTarget)。关于这个部分的更多信息,请查看这个博客.


项目配置

项目配置(ProjectConfiguration)是Visual Studio配置管理器存储可用平台(Platform)或配置(Configuration)的选项组(ItemGroup)。这个部分由Visual Studio配置管理器创建和维护:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<ItemGroup Label="ProjectConfigurations">
 
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
 
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
 
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
 
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
 
  </ItemGroup>


全局配置

你可能已经猜到它存储整个项目的全局设置。这个部分由模板或者人工创建,Visula Studio并不直接修改。它通常包含以下的元素:

1
2
3
4
5
<PropertyGroup Label="Globals">
    <ProjectGuid>{9cd23c68-ba74-4c50-924f-2a609c25b7a0}</ProjectGuid>
    <ProjectName>boost</ProjectName>
    <BoostDir>$(BOOST_BUILD_PATH)</BoostDir>
  </PropertyGroup>

需要重点指出的是,元素ProjectGuid在整个解决方案的所有项目中,必须是唯一的GUID。

我们将增加BoostDir变量,指向由BOOST_BUILD_PATH环境变量设置的路径。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部