我是 conan 的新手,我想使用 cmake 将 poco 库添加到我的项目中。 我使用以下方式安装了 poco 1.13.0:
$ conan install . --output-folder=build --build=missing
.
然后我使用了新的工具链:
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
最后,我尝试将 poco 标头添加到我的代码中,但出现构建错误:没有这样的文件或目录。我使用 CLion、CMake 3.28.1 和 Conan 2.0.17。我做错了什么?
CMakeLists.txt:
cmake_minimum_required(VERSION 3.27)
project(poco_test)
include_directories(build)
find_package(Poco REQUIRED)
add_executable(poco_test main.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE Poco::Poco)
conanfile.txt:
[requires]
poco/1.13.0
[generators]
CMakeDeps
CMakeToolchain
main.cpp:
#include <iostream>
#include "Poco/Exception.h"
int main() {
return 0;
}
我刚刚在 Ubuntu 22.04 上使用 g++13.1.0 和 CMake 3.28.3 测试了您的设置,无需任何修改即可运行。我能够构建并运行编译后的目标。
根据您的描述(“没有这样的文件或目录”),编译器似乎没有 Poco 标头的包含路径。
在指定可执行文件后,您可以在 CMakeLists.txt 中添加:
target_include_directories(${PROJECT_NAME} PRIVATE ${Poco_INCLUDE_DIRS})
问:我如何找到 Poco_INCLUDE_DIRS?
A:查看在 conan 安装期间创建的 poco 的 CMake 文件,即:
PocoConfig.cmake
以及之后的 Poco-release-x86_64-data.cmake