Rap*_*tor 7 c++ windows boost mingw boost-build
我目前正在将我的一个项目移植到GCC,我正在使用MinGW-w64项目完成此任务,因为我需要x64和x86支持.
我在设置构建环境时遇到了问题.我的项目目前使用Boost C++库,为了使构建过程更容易,我在项目中也使用了Boost.Build(因为它使集成变得简单).
在MSVC下这很好,因为我可以从命令行执行以下操作:
b2 toolset=msvc address-model=32 # compile as 32-bit
b2 toolset=msvc address-model=64 # compile as 64-bit
Run Code Online (Sandbox Code Playgroud)
由于32位和64位工具链位于不同的目录中,MinGW-w64使这个"有问题".(分别为C:\ MinGW32和C:\ MinGW64).
是否可以设置Boost.Build,它将根据地址模型标志选择正确的工具链?如果没有,我的下一个最佳选择是什么?
编辑:
如果它有帮助,我在MinGW-w64网站的"Personal Builds"文件夹中使用rubenvb 4.6.3-1版本(我特别使用这些版本,因为我希望尝试让我的代码解析 - 但不能编译 - 在Clang下).
编辑:
我刚才想到的一个解决方案是在编译之前"手动"将PATH设置为指向正确的工具链,但是这会给我的构建过程增加一层额外的复杂性,我想避免.理想情况下,我希望它像MSVC一样简单,但我知道这可能是不可能的.在最坏的情况下,我假设我刚刚建议的工作,我只需要在调用Boost.Build之前添加脚本来正确设置PATH.这意味着硬编码路径,我不想做...
通过添加工具集要求(使用toolset.add-requirements规则),Yo可以根据一组匹配属性选择任何Boost.Build工具集.在某些工具集中有内置的支持,例如darwin.jam(Xcode),但不幸的是我们还没有将它添加到gcc工具集中.但是,user-config.jam在声明工具集时,您可以使用相同的最小代码.对于你的情况,它可能看起来像这样:
import toolset ;
using gcc : gcc-4.6.3~32 : /path/to/32bit/mingw/gcc ;
using gcc : gcc-4.6.3~64 : /path/to/64bit/mingw/gcc ;
# Add a global target requirements to "choose" the toolset based on the address model.
toolset.add-requirements <toolset>gcc-4.6.3~32:<address-model>32 ;
toolset.add-requirements <toolset>gcc-4.6.3~64:<address-model>64 ;
Run Code Online (Sandbox Code Playgroud)
这具有将给定的条件要求添加到所有目标的效果.具有根据需要为特定声明的工具集选择特定目标的效果.
..Forgot提到..即使这是创建两个不同的工具集声明,默认仍然是动态选择.一个人会使用通常的命令行:
b2 toolset=gcc address-model=64
Run Code Online (Sandbox Code Playgroud)
使用64位mingw编译器.