当我使用 Conan 时,如何修复 CMake 中的未知命令错误?

Bog*_*sar 9 c++ build cmake conan

我有 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})

Run Code Online (Sandbox Code Playgroud)

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

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

[generators]
cmake
Run Code Online (Sandbox Code Playgroud)

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

$ 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".
Run Code Online (Sandbox Code Playgroud)

rak*_*ahu 5

我有一段时间被同一个问题困住了。经过几个线程后,我找到了解决方案。这里我也总结一下。

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

如果没有生成,那么您应该在 conanfile.py 中包含 cmake 生成器。就像下面这样:

generators = "virtualenv", "virtualrunenv", "cmake_find_package", "cmake"
Run Code Online (Sandbox Code Playgroud)

或者你可以在你的柯南个人资料中提及相同的内容。就像下面这样:

[generators]
cmake
Run Code Online (Sandbox Code Playgroud)

一旦生成该文件,cmake 应该能够找到它。conan_basic_setup() 步骤应该通过。

  • 我有那条线,但仍然是同样的错误 (7认同)