在 CMake 中链接 boost 文件系统的问题
Posted
技术标签:
【中文标题】在 CMake 中链接 boost 文件系统的问题【英文标题】:Problems linking boost's filesystem in CMake 【发布时间】:2020-10-03 23:00:50 【问题描述】:我在这个项目 (https://github.com/marcomedrano1999/files_in_directory.git) 中使用来自 Boost 的文件系统库,当我将 boost 根链接到项目时它工作正常(我正在使用 Visual Studio),但我需要它是交叉的平台,所以我在我的 CMakeLists.txt 中实现了以下内容:
cmake_minimum_required(VERSION "3.18.3")
project("listdir")
find_package(Boost 1.73.0 REQUIRED filesystem)
include_directories("$Boost_INCLUDE_DIRS")
link_directories("$Boost_LIBRARY_DIRS")
add_executable("$PROJECT_NAME" "Main.cpp")
target_link_libraries("$PROJECT_NAME" $Boost_LIBRARIES)
但是当我尝试在 CMake 中配置它时,显示以下错误:
CMake Error at C:/Program Files/CMake/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
Could NOT find Boost (missing: filesystem) (found suitable version
"1.73.0", minimum required is "1.73.0")
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458(_FPHSA_FAILURE_MESSAGE)
C:/Program Files/CMake/share/cmake-3.18/Modules/FindBoost.cmake:2177(find_package_handle_standard_args)
CMakeLists.txt:5 (find_package)
我为此尝试了几种方法(如文档页面所示),但其中任何一种都有效。如果我做错了什么,谁能告诉我?
【问题讨论】:
启用Boost_DEBUG
选项并查看在哪些文件和目录中搜索filesystem
库。然后将它们与您实际拥有的文件和目录进行比较。顺便说一句,Boost_DEBUG
在documentation 中有描述。
【参考方案1】:
如果您在非标准位置安装了 Boost 库,则可以通过 BOOST_ROOT 指定 Boost 安装目录:
cmake -DBOOST_ROOT=<path to the boost installation directory> <... the rest of cmake options ...>
还要确保真正安装了 boost 的文件系统部分(文件系统是一个编译库,与其他仅头文件的库相比)。
【讨论】:
以上是关于在 CMake 中链接 boost 文件系统的问题的主要内容,如果未能解决你的问题,请参考以下文章
cmake - 如何可能链接 Boost 的 sub_directory 头文件(例如:/archive/text_oarchive.hpp)?