【问题标题】:CMake and/or make error while adding boost to projectCMake 和/或在向项目添加提升时出错
【发布时间】:2019-04-10 12:34:55
【问题描述】:

我开始了一个新的 C++ 项目,尝试使用 boost program_options。不幸的是,我在使用 cmake 时遇到了麻烦;根据我的尝试,我要么得到一个 gmake 错误,无法构建文件,要么得到另一个关于不包含 % 的目标模式的错误。

实际错误是:

使用 ${Boost_LIBRARIES} 时(案例 1):gmake 错误:没有构建 /usr/local/lib/libbooost_program_options.so 的规则

使用 Boost::program_options 时(案例 2):gmake 错误:目标模式不包含“%”。停下来。

我的解决方案尝试来自这个 SO 线程:How to link C++ program with Boost using CMake

关于案例 1:this 提供了针对此问题的分步指南。不幸的是,在第一步“检查文件是否存在”之后,没有提示如果它确实存在该怎么办,在我的例子中就是这样。

stat /usr/local/lib/libboost_program_options.so
  Datei: /usr/local/lib/libboost_program_options.so -> libboost_program_options.so.1.62.0

其他线程,例如"No rule to make target" error in cmake when linking to shared library 建议使用查找器脚本,我已经这样做了。

编辑:感谢评论,结果我对部分错误消息视而不见:插入生成文件的路径是“Boost::program_options-NOTFOUND”,这显然会导致错误。


关于案例 2:Target pattern contains no '%'. Makefile 暗示这是我的任何路径的路径问题。我对如何进一步调试问题一无所知,因为调试 cmake 脚本似乎没有得到很好的支持。在任何搜索引擎上都很难找到这方面的信息。

我使用的两个版本的 cmake 脚本是这样的:

cmake_minimum_required(VERSION 3.13)
project(probsim)

set(CMAKE_CXX_STANDARD 17)

FIND_PACKAGE(Boost COMPONENTS program_options REQUIRED )

add_executable(probsim main.cpp)

target_link_libraries(probsim ${Boost_LIBRARIES})
# alternative: target_link_libraries(probsim Boost::program_options)

结果是:

-- Boost version: 1.62.0
-- Found the following Boost libraries:
--   program_options
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ketzu/CLionProjects/probsim/cmake-build-debug

总结:Cmake 以某种方式创建了一个无效的 makefile,原因似乎与我的文件系统上使用的路径有关。

【问题讨论】:

  • "关于案例 2:[目标模式不包含 '%'。Makefile] 暗示这是我的任何路径的路径问题。我对如何进一步调试问题一无所知" - 你可能从 查看导致错误的 Makefile 行 开始。 Makefile 的路径和错误行打印在错误消息中。至于缺少的文件/usr/local/lib/libboost_program_options.so,您需要安装提供给定文件的包。要查找软件包名称,只需 google 搜索“”。
  • @Tsyvarev 感谢案例 2 的提示,我对此一无所知。这有帮助。我将对其进行编辑。关于案例 1 和软件包的安装:据我所知,该文件存在并且已经安装了 boost-devel。

标签: c++ boost cmake clion


【解决方案1】:

虽然我可以找到问题原因的线索,但我无法解决它们。这很可能是我在 Fedora 上的系统配置有问题。

但作为操作系统开发库管理和 ld 问题的替代解决方案,我使用 conan.io 和 cmake 来设置我的开发环境。

虽然这可能无法帮助每个人总结出与我类似的问题,但它可能会帮助一些人。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2012-11-07
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多