cmake-3.6.2 FindBoost.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。

你可能感兴趣的:(技术文档)