2015-10-16 140 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的例子吗? –