在向项目添加提升时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和/或出错的主要内容,如果未能解决你的问题,请参考以下文章