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

被折叠的 条评论
为什么被折叠?



