如何在构建Boost时删除编译器标志

如何在构建Boost时删除编译器标志,boost,Boost,我需要使用一组非标准的标志构建Boost(由于Boost线程和C++/CLI之间存在冲突)。我正在使用cxflags添加所需的标志(/clr),但该标志与Boost默认的/EHs标志冲突(/clr暗示/EHa与/EHs不兼容),因此需要抑制该标志。是否有像CXXFLAGS这样的机制来抑制默认Boost标志,或者我必须手动编辑所有编译器规范文件?无法删除这些特定选项。您需要做的是指定一个特定的构建变量,该变量与您试图构建的内容相匹配。如果您查看msvc.jam(),您会发现一个部分,其中列出了它放

我需要使用一组非标准的标志构建Boost(由于Boost线程和C++/CLI之间存在冲突)。我正在使用cxflags添加所需的标志(/clr),但该标志与Boost默认的/EHs标志冲突(/clr暗示/EHa与/EHs不兼容),因此需要抑制该标志。是否有像CXXFLAGS这样的机制来抑制默认Boost标志,或者我必须手动编辑所有编译器规范文件?

无法删除这些特定选项。您需要做的是指定一个特定的构建变量,该变量与您试图构建的内容相匹配。如果您查看
msvc.jam
(),您会发现一个部分,其中列出了它放入的各种
/EH*
选项()。如您所见,第三个与C++/CLI所需的
/EHa
匹配。这转化为使用以下内容进行构建:
bjam asynch exceptions=on extern-c-nothrow=on
。显然不需要对执行
异常处理,因为默认情况下,您会得到它,并且首先不会看到
/EHs
选项