2015-10-16 143 views
0

我想向我的CMakeLists.txt文件添加提升。不過,我收到此錯誤:Boost_LIBRARYDIR不是正確的拼寫

CMake Error at /export/home/yhe/local/share/cmake-3.3/Modules/FindBoost.cmake:393 (message): 
    ERROR: Boost_LIBRARYDIR is not the correct spelling. The proper spelling 
    is BOOST_LIBRARYDIR. 

我使用cmake3.3.2和命令:

find_package(Boost 1.55.0 COMPONENTS atomic REQUIRED) 

這是文件:

1 cmake_minimum_required(VERSION 2.8.9)                                           
    2 SET(CMAKE_INCLUDE_DIR ${CMAKE_LINCLUDE_DIR} "/export/home/thirdparty/boost/1.55.0/")                               
    3 SET(CMAKE_LIBRARYDIR ${CMAKE_LIBRARYDIR} "/export/home/thirdparty/boost/1.55.0/lib/AS5")                              
    4 message(${Boost_LIBRARYDIR})                                             
    5 find_package(Boost COMPONENTS atomic REQUIRED)                                        

原來,Boost_LIBRARYDIR定義當我打電話給cmake時。刪除CMakeCache.txt文件,問題消失。我想我可能已經設置了Boost_LIBRARYDIR,當我試圖使它工作並且被緩存時。當Boost_LIBRARYDIR被定義時,FindBoost.cmake將退出。但是,這個錯誤信息是真的令人誤解。

+0

您的問題是什麼?您說清除緩存後問題消失。 – pmr

+0

是的,find_package需要Boost_LIBRARY未定義。但是,它在我的系統中定義在緩存文件中。查看FindBoost.cmake,spellCheck旨在確保人們不會將BOOST作爲Boost和意外設置Boost_LIBRARY混淆,但是,錯誤消息有點誤導。他們應該說「Boost_LIBRARYDIR集合,你確定你沒有設置BOOST_LIBRARYDIR?」。 –

+0

這正是它所說的。另外,在我看來,這應該是CMake的錯誤報告,而不是stackoverflow的問題。 – pmr

回答

0

BOOST_ROOT, BOOST_LIBRARYDIR, BOOST_INCLUDEDIR變量區分大小寫。

我正在使用cmake和Boost。

在我使用的cmake下面。請注意,我正在編譯使用MSVC 12

set(BOOST_ROOT C:/boost/boost_1_55_0/) 
set(BOOST_INCLUDEDIR C:/boost/boost_1_55_0/boost) 
set(BOOST_LIBRARYDIR C:/boost/boost_1_55_0/lib64-msvc-12.0) 
set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED ON) 
set(Boost_COMPILER -vc120) 
find_package(Boost 1.55.0 COMPONENTS atomic REQUIRED) 
+0

即使我設置BOOST_ROOT ...等,我仍然得到這個錯誤。只有當我註釋掉FindBoost.cmake上的檢查咒語時,我才能夠通過。我現在認爲,如果我的cmake版本有一些bug ... –

+0

你有你的cmake的例子嗎? –