在向项目添加提升时CMake和/或出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在向项目添加提升时CMake和/或出错相关的知识,希望对你有一定的参考价值。

我开始尝试使用boost program_options的新c ++项目。不幸的是我在使用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建议使用finder脚本,我已经这样做了。

编辑:感谢评论,结果发现我对部分错误消息视而不见:插入makefile的路径是“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,其原因似乎与我的文件系统上使用的路径有关。

答案

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

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

虽然这可能无法帮助每个人遇到类似的问题,但这可能对某些人有帮助。

谢谢大家的帮助。

以上是关于在向项目添加提升时CMake和/或出错的主要内容,如果未能解决你的问题,请参考以下文章

VsCode 代码片段-提升研发效率

无法在 CMAKE 中复制文件:复制文件时出错

使用 cmake 和 travis 提升 1.67 静态库

谷歌地图片段无法膨胀

当我尝试在片段中显示或隐藏浮动操作按钮时出错

VBA - Excel列表框 - 在向第二个列表框添加项目时查找重复项