首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost_LIBRARIES未定义

Boost_LIBRARIES未定义
EN

Stack Overflow用户
提问于 2019-05-08 08:11:53
回答 1查看 2.1K关注 0票数 8

我正在尝试编译FreeLing,它使用CMake来检测Boost。这是对此负责的代码:

代码语言:javascript
复制
  find_package(Boost COMPONENTS regex filesystem thread program_options REQUIRED)

找到这些组件(与CMake生成的输出相应):

代码语言:javascript
复制
-- Found Boost 1.70.0 at /home/ambs/usr/lib/cmake/Boost-1.70.0
--   Requested configuration: QUIET REQUIRED COMPONENTS regex;filesystem;thread;program_options
-- Found boost_headers 1.70.0 at /home/ambs/usr/lib/cmake/boost_headers-1.70.0
-- Found boost_regex 1.70.0 at /home/ambs/usr/lib/cmake/boost_regex-1.70.0
--   libboost_regex.so.1.70.0
-- Adding boost_regex dependencies: headers
-- Found boost_filesystem 1.70.0 at /home/ambs/usr/lib/cmake/boost_filesystem-1.70.0
--   libboost_filesystem.so.1.70.0
-- Adding boost_filesystem dependencies: headers
-- Found boost_thread 1.70.0 at /home/ambs/usr/lib/cmake/boost_thread-1.70.0
--   libboost_thread.so.1.70.0
-- Adding boost_thread dependencies: headers
-- Found boost_program_options 1.70.0 at /home/ambs/usr/lib/cmake/boost_program_options-1.70.0
--   libboost_program_options.so.1.70.0
-- Adding boost_program_options dependencies: headers
-- Boost  found.
-- Found Boost components:
   regex;filesystem;thread;program_options

尽管如此,Boost_LIBRARIES似乎从未被设置过。我试过这个:

代码语言:javascript
复制
  find_package(Boost COMPONENTS regex filesystem thread program_options REQUIRED)
  message(STATUS "Boost_LIBRARIES=" ${Boost_LIBRARIES})

它总是输出一个空字符串。

作为参考,我有CMake版本3.14.3和Boost版本1.70.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-08 08:40:27

线

在/home/ambs/usr/lib/cmake/ Boost -1.70.0找到Boost 1.70.0

这意味着CMake模块FindBoost.cmake不使用自己的方法检测Boost库和标头,而是求助于位于日志中显示的目录中的BoostConfig.cmake脚本。

FindBoost.cmake模块的文档说明如下:

此模块查找标题和所请求的组件库或由“Boost CMake”构建提供的CMake包配置文件。对于后一种情况,请跳到下面的“Boost CMake”部分。对于前一种情况,结果用变量报告:

简而言之,使用BoostConfig.cmake脚本意味着它设置了自己的变量或目标,而FindBoost.cmake文档中描述的变量或目标无效。

最有可能的是,"Config“文件设置导入的目标的方式与FindBoost.cmake文档中描述的相同,即Boost::regexBoost::filesystem等等。

如果您想禁用使用BoostConfig.cmake并强制FindBoost.cmake按照其文档中描述的方式运行,请设置Boost_NO_BOOST_CMAKE变量。例如,何时调用cmake

代码语言:javascript
复制
cmake -DBoost_NO_BOOST_CMAKE=ON <other-options>
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56036266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档