在boost构建中,如何有条件地设置编译器选项?

时间:2014-01-13 07:09:18

标签: boost.build

有没有办法(没有修改源文件)指定我想用msvc构建boost,在调试中有一组附加选项而另一个在发布变体中?在一些config.jam甚至更好的命令行?像

using msvc : : <compileflags>-DRELEASE_DEFINES; - only if variant=release
using msvc : : <compileflags>-DDEBUG_DEFINES; - only if variant=debug
using msvc : : <compileflags>-DLL_SPECIFIC_STUFF; - only if link=shared

我能够找到一个使用命令行的建议,例如variant = debug / somefeature = somevalue,但这不起作用。

1 个答案:

答案 0 :(得分:2)

好吧,经过一些实验,我能够通过project-config.jam使其工作,这是一个示例:

import option ;
import toolset ;

using msvc ;

toolset.flags msvc.compile CFLAGS <variant>release : "/GL /arch:SSE2 /fp:fast" : unchecked ;
toolset.flags msvc.compile CFLAGS <variant>debug : "/RTCc /RTC1 /GS" : unchecked ;
toolset.flags msvc.archive AROPTIONS <variant>release/<link>static : "/LTCG" : unchecked ;
toolset.flags msvc.link LINKFLAGS <variant>release/<link>shared : "/LTCG /OPT:REF /OPT:ICF" : unchecked ;
toolset.flags msvc.link LINKFLAGS <link>shared : "/PDB:c:\\Lib\\boost\\stage\\lib\\" : unchecked ;

option.set keep-going : false ;