C++ 加力1.56的卡萨布兰卡因-Werror而失败

C++ 加力1.56的卡萨布兰卡因-Werror而失败,c++,boost,casablanca,C++,Boost,Casablanca,我尝试使用boost 1.56构建,但由于Casablanca的-Werror标志将boost警告转为错误,我的构建一直失败 例如: CXX=g++ BOOST_ROOT=${boost} cmake .. -DCMAKE_BUILD_TYPE=Release 产生如下错误(太多而无法显示) 我似乎在谷歌上找不到任何补救办法,尽管我发现有人用1.56构建了帖子,但在src/CMakeList.txt中没有提到禁用Werror(这似乎确实允许代码构建)以阻止编辑卡萨布兰卡的CMakeLists.

我尝试使用boost 1.56构建,但由于Casablanca的
-Werror
标志将boost警告转为错误,我的构建一直失败

例如:

CXX=g++ BOOST_ROOT=${boost} cmake .. -DCMAKE_BUILD_TYPE=Release
产生如下错误(太多而无法显示)


我似乎在谷歌上找不到任何补救办法,尽管我发现有人用1.56构建了帖子,但在
src/CMakeList.txt中没有提到禁用
Werror
(这似乎确实允许代码构建)

以阻止编辑卡萨布兰卡的CMakeLists.txt,运行cmake命令时,可以添加-DWERROR=OFF参数,例如:

cmake -DCMAKE_BUILD_TYPE=Release -DWERROR=OFF <path to src>
cmake-DCMAKE\u BUILD\u TYPE=Release-DWERROR=OFF

请注意,cmake可以缓存选项值,因此最好在干净的构建目录中重新运行cmake。我其实读得不太好。如果是这些警告,不要用-Werror构建boost。它不会工作。
-Werror
在卡萨布兰卡
CMakeLists.txt
文件中。。它一定是有原因的——或者更确切地说,每个人都必须手动删除它是很奇怪的斯奈斯,我不知道这个选项。我会看看我是否能在今天的某个时候重建它,并希望把这个问题作为答案。谢谢根据git历史记录,此选项是在2016-02-02添加的,因此如果您使用早期版本的存储库,此答案将无效。您可以在Release/CMakeLists.txtah的顶部看到此选项,我看到了。它不在主分支中(截至今天),而是在
prerelease-3.0.0
分支中。很高兴知道,一旦我使用版本3,我将修改我的构建脚本来设置它,但在此之前,我一直在运行
sed-I's/-Werror/'Release/src/CMakeLists.txt
ThanksHi Matt,是的,不幸的是此修复程序不在master中。对不起。但是,如果您的目的是阻止编辑卡萨布兰卡的cmake文件,您仍然有一个选项:使用以下参数运行cmake:
-DCMAKE\u CXX\u FLAGS=“-issystem”
在我的例子中,它看起来是这样的:
cmake-DCMAKE\u BUILD\u TYPE=Release-DCMAKE\u CXX\u FLAGS=“-isystem/home/user/proj/boost/include
boost标头将被视为系统标头(实际上它们是系统标头),因此boost警告将被抑制。这是一个黑客程序,但它对我有效:)如果对你合适的话,我可以更新答案注:它有效是因为-isystem include稍后会停留-I include,从而覆盖它
cmake -DCMAKE_BUILD_TYPE=Release -DWERROR=OFF <path to src>