【问题标题】:How to fix unknown command error in CMake, when I using Conan?当我使用柯南时,如何修复 CMake 中的未知命令错误?
【发布时间】:2020-04-01 09:01:13
【问题描述】:

我有 CMakeLists.txt 文件:

project(ip_filter LANGUAGES CXX)
cmake_minimum_required(VERSION 2.8)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

add_executable(ip_filter ip_filter.cpp)
target_link_libraries(ip_filter ${CONAN_LIBS})

在同一个文件夹中,我有一个 conanfile.txt:

[requires]
range-v3/0.9.1@ericniebler/stable

[generators]
cmake

当我尝试构建它时,使用:

$ cmake CMakeLists.txt

我有这个输出:

CMake Error at CMakeLists.txt:4 (include):
  include could not find load file:

    /home/bogdasar/Documents/C++_Programming/ip_filter/conanbuildinfo.cmake


CMake Error at CMakeLists.txt:5 (conan_basic_setup):
  Unknown CMake command "conan_basic_setup".


-- Configuring incomplete, errors occurred!
See also "/home/bogdasar/Documents/C++_Programming/ip_filter/CMakeFiles/CMakeOutput.log".

【问题讨论】:

  • 错误信息是include could not find load file: /home/bogdasar/Documents/C++_Programming/ip_filter/conanbuildinfo.cmake。你检查文件是否存在?文件是否正确?
  • @ThomasSablik 是的,文件不存在。但是在柯南文档中没有写任何关于这个文件的内容。他负责什么?里面是什么?它是自己生成的还是我应该写的?
  • 你运行conan install了吗? docs.conan.io/en/latest/…
  • @ThomasSablik 我应该安装什么?
  • 是的,请按照入门指南进行操作,首先确保它有效:docs.conan.io/en/latest/getting_started.html。然后,只有在成功之后,才开始对那些试图实现目标的文件进行修改。很可能您还想开始使用 ConanCenter 中更现代的软件包,那些没有“用户/频道”的软件包,例如“ericniebler/stable”。检查conan.io/center/range-v3/0.9.1/?user=_&channel=_

标签: c++ build cmake conan


【解决方案1】:

我在同一个问题上停留了一段时间。经过几个线程后,我找到了解决方案。在这里我总结一下。

这里的问题是 cmake 无法找到 conanbuildinfo.cmake。调用 conan install 时应该会生成这个文件。

如果它没有生成,那么你应该在 conanfile.py 中包含 cmake 生成器。如下:

generators = "virtualenv", "virtualrunenv", "cmake_find_package", "cmake"

或者您可以在您的柯南个人资料中提及相同的内容。如下:

[generators]
cmake

生成此文件后,cmake 应该能够找到它。并且 conan_basic_setup() 步骤应该通过。

【讨论】:

  • 我有那行,但仍然是同样的错误
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多