C_and_CPP 板


LINE

前言: 会写这篇文章是因为网路上的资料零零散散的 所以写一篇文章分享给各位(也给未来的自己) 这篇文章会讲到b2.exe的参数部分 作业系统:windows 编译器:Visual C++ 14.0(Visual Studio 2015) 正文开始: 首先,先去boost的官网下载最新的lib,http://www.boost.org/users/download/ 目前(2016/2/16)最新版本是1.60.0(所以底下都用boost_1_60_0),下载好记得解压缩 里面会看到bootstrap.bat,他是一个用来产生b2.exebjam.exe的档案 (版本1.47.0以前,只有bjam.exe;版本1.47.0以後,bjam.exe改名为b2.exe) (现在的bjam.exeb2.exe的复制版本,两个是一样的,但bjam.exe为了与以前相容而存在) 执行bootstrap.bat 在boost里面,有些library是header-only(只要是class template),有些不是(如:thread) 因此只要使用这些非header-only的档案,就要把那些.cpp档也放入编译 但是每次都这样编译实在很花时间,这些档案都是不会被更改的,那不如就先把他做成.lib(static link library)或.dll(dynamic link library) 让user之後不用编译这些不会动的library 因此,就要开始介绍如何制作这些.lib或.dll 调整编译器参数 你需要先知道编译器版本,像我是Visual C++ 14.0 (如果不知道版本,维基百科有提供协助https://goo.gl/fhIKnR,或在维基百科上搜寻visual c++) 打开boost_1_60_0/project-config.jam(注),里面有一行 using msvc ; 你要改成 using msvc : 14.0 ; ^ ^ ^ 一定要有空格 (如果你电脑只有一个编译器,实际上可以不用填) 如果你的visual studio不是安装在预设路径,那你可能需要指定路径,因此要改成 using msvc : 14.0 : "D:/your/path/to/cl.exe" ; 路径中如果有空格(如:D:/my boost),要用"包起来,并且用/来表示路径(不然就用\\) (cl.exe是visual c++的编译器) 如果你有特别的参数想要给compiler,例如说你希望它只有在编译c++ code时做optimize,那你就要改成 using msvc : 14.0 : : <cxxflags>"/Od /Ox" ; ^ 因为我用预设路径,所以可以不填任何值 cxxflags是专门针对的C++做处理,如果想对所有语言做处理,可以使用<compileflags> /Od /Ox是cl.exe的optimize options,别忘记用"包起来 当你的b2.exevariant使用release时,预设是使用/O2,如果你想用/Ox,你需要先用/O d把/O2关起来,再使用/Ox 关於更多using的设定可参考http://goo.gl/RYZRWtcl.exe参数可参考https://goo.gl/07qCDd,或搜寻visual c++ compiler options 注:不使用user-config.jam是因为它在boost_1_60_0/tools/build/example里面,我懒得移动它 准备b2.exe参数 b2.exe就是实际上产生.lib或.dll的档案,接下来会介绍参数,每一个参数的第一个就是预设值 address-model:32, 64 要产生32或64位元的code architecture:x86, ia64, sparc, power, mips1, mips2, mips3, mips4, mips32, mips32r2, mips64, parisc, arm, combined, combined-x86-power 因为没有amd64可以选,所以应该大部分人都会选x86 link:shared, static shared会产出.dll,static会产出.lib runtime-link:shared, static shared会用dynamic的run-time library(visual c++的/MD) static会用static的run-time library(visual c++的/MT) 建议使用shared(default) target-os: 预设值是你现在使用的os(像我是windows,它就会产出给windows用的library) 如果你想要编译给别的os用的library,你可以给这些参数aix, bsd, cygwin, darwin, freebsd, hpux, iphone, linux, netbsd, openbsd, osf, qnx, qnxnto, sgi, solaris, unix, unixware, windows threading:single, multi 建议选择multi,因为你不使用thread并不代表你用的library不使用thread toolset: 像我的编译器是visual c++,所以我会填msvc-14.0(因为我要用14.0的版本) variant:debug, release, profile debug会包含debug-symbolsruntime-debugging release会包含optimizationinlining profile会包含debug-symbolsoptimizationinlining debug-symbols:on, off 建议交给variant设定就好 runtime-debugging:on, off 建议交给variant设定就好 --build-type:minimal, complete 如果是minimal,在windows上,它只会编译debug跟release两种mode(variant) 但如果是complete,它就会编译你能提供的所有可能,address-model x architecture x ... 建议使用minimal(default) -jN:平行执行N个指令 N跟你的CPU核心数有关,像我的CPU是8核心,所以N就是8 stage, install: stage是装在./stage,install是装在C:/Boost (前者给你用,後者给所有用这台电脑的人用) 到目前为止,最主要的参数应该都讲完了,接下来就是如何使用 1. 打开command prompt,如果你有cygwinMinGW,请不要用他们的bash shellb2.exe 以为是Unix系统 2. cd boost_1_60_0 3. b2.exe 你的指令 (如:b2.exe -j8 address-model=64 link=static threading=multi toolset=msvc-14.0 variant=release stage,顺序不影响,architectureruntime-link--build-type使用default) (如:b2.exe -j8 address-model=32,64 link=static threading=multi toolset=msvc-14.0 variant=debug,release --build-type=complete stage,这边address-model有32与64,variant有debug与release,因此到时候就会产出4个.lib,分别是32 x debug、32 x release、64 x debug、64 x release) 4. 等它执行完毕即可 这样就大功告成,之後如果你有visual c++的project要使用boost library 你只要在project > XXX Properties... > Configuration Properties > Linker > General > Additional Library Directories增加boost_1_60_0/stage/lib即可 参考http://www.boost.org/doc/libs/1_60_0/doc/html/bbv2/reference.html http://www.boost.org/doc/libs/1_60_0/more/getting_started/windows.html https://webptt.com/cn.aspx?n=bbs/Windows/M.1242287062.A.27C.html https://msdn.microsoft.com/en-us/library/8f8h5cxt.aspx --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.251.50.24
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1455637005.A.3C0.html
1F:推 saxontai: 推心得整理。不过我自己是认为官方 Getting Started 02/17 00:23
2F:→ saxontai: 文件已经讲得够清楚了。XD 02/17 00:23
3F:推 damody: 我一直用bjam也没问题啊??? 02/17 00:48
4F:→ damody: bjam --toolset=msvc-14.0 --build-type=complete archite 02/17 00:50
5F:→ damody: cture=x86 address-model=64 stage 02/17 00:51
6F:→ b98901056: 感恩 02/17 00:56
※ 编辑: Caesar08 (1.161.19.40), 02/17/2016 12:24:09
7F:推 eye5002003: Jamfile里面写很简单,看完都自己写makefile去编译了 02/17 20:49
8F:→ eye5002003: 我是自己写CMake去编译,方便把微调部分记在专案里 02/17 20:52







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP