cmake-3.6.2 FindBoost.cmake 错误

在Windows Mingw64环境下,使用CMake 3.6.2配置包含Boost依赖的项目时,遇到FindBoost.cmake错误,提示函数缺少右括号。通过检查发现错误位于1195行的if语句,缺少右括号。手动添加后,CMake成功运行,但随后在1195行的if语句中发现新的错误,同样是缺少右括号。修复该问题后,CMake配置完成无误。

先说结论:

1195行的if缺少右括号: if ( (GHSMULTI AND Boost_USE_STATIC_LIBS) OR
    ( WIN32 AND Boost_USE_STATIC_LIBS AND NOT CYGWIN AND NOT MSYS) )

平台:windows + mingw64

用cmake编译一个项目的时候依赖boost库,下载boost之后执行

$ cmake -DBOOST_ROOT:STRING=/d/dev/boost_1_67_0 -DBOOST_VER:STRING=1.67.0 ./

报如下错误:

CMake Error: Error in cmake code at
/usr/share/cmake-3.6.2/Modules/FindBoost.cmake:1808:
Parse error.  Function missing ending ")".  End of file reached.
CMake Error at CMakeLists.txt:23 (find_package):
  find_package Error reading CMake code from
  "/usr/share/cmake-3.6.2/Modules/FindBoost.cmake".


-- Configuring incomplete, errors occurred!
 

提示错误是缺少右括号")"

$ vi  /usr/share/cmake-3.6.2/Modules/FindBoost.cmake

发现1808行是最后一行

set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}"

CACHE INTERNAL "Components requested for this build tree.")

错误肯定不是出在这一行,往前又找了几十行,没有发现缺少")"

这个文件1800行,总不能一行一行的找吧,总要想一个办法。他提示最后缺少右括号那个补一个试试,^_^

补上之后再次cmake,这时候奇迹出现了

$ cmake -DBOOST_ROOT:STRING=/d/dev/boost_1_67_0 -DBOOST_VER:STRING=1.67.0 ./
-- not define build type, set to release
CMake Error at /usr/share/cmake-3.6.2/Modules/FindBoost.cmake:1195 (if):
  if given arguments:
哈哈,原来是1195的if少了一个右括号,vi一下看看

if ( (GHSMULTI AND Boost_USE_STATIC_LIBS) OR
    ( WIN32 AND Boost_USE_STATIC_LIBS AND NOT CYGWIN AND NOT MSYS) )
  set(Boost_LIB_PREFIX "lib")
endif()
果然再后色右括号的位置少了一个,补上,cmake,OK。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值