Boost_LIBRARIES未定义

时间:2019-05-08 08:11:54

标签: boost cmake

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

json.loads(tasks)

找到了这些组件(根据CMake生成的输出):

  find_package(Boost COMPONENTS regex filesystem thread program_options REQUIRED)

尽管如此,似乎从未设置-- 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

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

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

1 个答案:

答案 0 :(得分:4)

  

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

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

FindBoost.cmake模块的文档采用以下方式进行注释:

  

此模块查找标头和请求的组件库或CMake   “ Boost CMake”版本提供的软件包配置文件。为了   对于后一种情况,请跳到下面的“提升CMake”部分。对于前者   案例结果以变量报告:

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

很有可能,“配置”文件以FindBoost.cmake文档中所述的相同方式设置导入的目标,即Boost::regexBoost::filesystem和等等。


如果要禁用使用BoostConfig.cmake并强制FindBoost.cmake遵循其文档中所述的行为,请设置Boost_NO_BOOST_CMAKE变量。例如,在致电cmake时:

cmake -DBoost_NO_BOOST_CMAKE=ON <other-options>