【发布时间】:2018-09-08 18:24:59
【问题描述】:
这个问题是之前在 SO 上出现过的问题。比如这个问题: Cmake doesn't find Boost 但是那里和其他地方的答案似乎不起作用。
在安装了 stock boost 1.58.0 的 Ubuntu 16.04 上,我还在自定义位置构建了 boost 1.68.0。
现在我正在尝试使用 boost 和 cmake 编译一个简单的 c++ 程序。它没有找到提升。任一版本(尽管 1.68.0 是我真正想要使用的版本)。 它给: -- 找不到 Boost(缺少:Boost_DIR)
CMakeLists.txt 文件如下。正在使用 CMake 3.12.1。
cmake_minimum_required(VERSION 3.0.0)
set(CMAKE_CXX_STANDARD 17)
project(mytest CXX)
set(Boost_DEBUG ON)
set(Boost_DETAILED_FAILURE_MSG ON)
set(BOOST_ROOT /home/hal/projects/boost/boost)
# set(Boost_DIR /home/hal/projects/boost/boost)
#set(Boost_USE_DEBUG_LIBS ON)
#set(Boost_USE_STATIC_LIBS ON)
#set(Boost_USE_MULTITHREADED ON)
# set(Boost_USE_STATIC_RUNTIME OFF)
#set(Boost_INCLUDE_DIR /home/hal/projects/boost/boost )
set(Boost_ADDITIONAL_VERSIONS "1.58" "1.58.0")
#set(BOOST_INCLUDEDIR /home/hal/projects/boost/boost/include )
#set(BOOST_LIBRARYDIR /home/hal/projects/boost/boost/lib )
#SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "/home/hal/projects/boost/boost")
#SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "/home/hal/projects/boost/boost/lib")
find_package(Boost 1.68.0 COMPONENTS system date_time PATHS /home/hal/projects/boost/boost )
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(mytest main.cpp)
target_link_libraries(mytest ${Boost_LIBRARIES} stdc++)
endif()
【问题讨论】:
-
使用
Boost_DEBUG选项 CMake 输出搜索 Boost 的位置以及搜索的确切文件。显示该输出。 -
该输出在文件系统中的什么位置?
-
再次运行
cmake,消息会输出到控制台。 -
当我运行时:cmake 。 | tee output.txt -- 找不到 Boost(缺少:Boost_DIR) -- 配置完成 -- 生成完成 -- 构建文件已写入:/home/hal/projects/testcpp/src
-
哦,我明白了 - 删除
PATHS选项到find_package(Boost)。该选项不符合您的要求,设置BOOST_ROOT应该就足够了。