本文档翻译自:https://docs.conan.io/en/latest/getting_started.html#an-md5-hash-calculator-using-the-poco-libraries
:::info
Note
创建这个项目的源文件可以在GitHub的示例存储库中找到。
$ git clone https://github.com/conan-io/examples.git && cd examples/libraries/poco/md5
:::
1、在文件夹中创建以下源文件。这将是我们的应用程序的源文件:
md5.cpp¶
#include "Poco/MD5Engine.h"
#include "Poco/DigestStream.h"
#include <iostream>
int main(int argc, char** argv)
{
Poco::MD5Engine md5;
Poco::DigestOutputStream ds(md5);
ds << "abcdefghijklmnopqrstuvwxyz";
ds.close();
std::cout << Poco::DigestEngine::digestToHex(md5.digest()) << std::endl;
return 0;
}
2、我们知道我们的应用程序依赖于Poco库。让我们在 conan-center 中寻找它:
$ conan search poco --remote=conan-center
Existing package recipes:
poco/1.8.1
poco/1.9.3
poco/1.9.4
在搜索中必须指定 remote。否则,它将只搜索本地缓存。
:::info
Note
Conan客户端包含一个在远程存储库中搜索的命令,我们可以尝试 $ Conan search poco --remote=conan-center
您可以很好地使用此命令在您自己的存储库中搜索,但是请注意,此时在ConanCenter中可能会超时。基础设施也正在改进以支持此命令,但同时建议使用ConanCenter UI。
:::
3、我们得到了关于 Poco 的数据。让我们检查一下1.9.4版本包的详细数据:
$ conan inspect poco/1.9.4
name: poco
version: 1.9.4
url: https://github.com/conan-io/conan-center-index
homepage: https://pocoproject.org
license: BSL-1.0
author: None
description: Modern, powerful open source C++ class libraries for building network- and internet-based applications that run on desktop, server, mobile and embedded systems.
topics: ('conan', 'poco', 'building', 'networking', 'server', 'mobile', 'embedded')
generators: cmake
exports: None
exports_sources: CMakeLists.txt
short_paths: False
apply_env: True
build_policy: None
revision_mode: hash
settings: ('os', 'arch', 'compiler', 'build_type')
options:
cxx_14: [True, False]
enable_apacheconnector: [True, False]
enable_cppparser: [True, False]
enable_crypto: [True, False]
[...]
default_options:
cxx_14: False
enable_apacheconnector: False
enable_cppparser: False
enable_crypto: True
[...]
4、接下来我们要指出我们的构建系统所需的依赖包(requires)和生成器(generators)。让我们在项目文件夹中创建一个conanfile.txt,内容如下:
conanfile.txt¶
[requires]
poco/1.9.4
[generators]
cmake
在本例中,我们使用 CMake 来构建项目,这就是为什么要指定 CMake
生成器。这个生成器创建一个conanbuildinfo.cmake 定义cmake变量的文件,包括可以在我们的构建中使用的路径和库名。阅读更多关于 Generators 的信息。
5、下一步,我们将安装所需的依赖包,并生成构建的信息:
$ mkdir build && cd build
$ conan install ..
...
Requirements
openssl/1.0.2t from 'conan-center' - Downloaded
poco/1.9.4 from 'conan-center' - Downloaded
zlib/1.2.11 from 'conan-center' - Downloaded
Packages
openssl/1.0.2t:eb50d18a5a5d59bd0c332464a4c348ab65e353bf - Download
poco/1.9.4:645aaff0a79e6036c77803601e44677556109dd9 - Download
zlib/1.2.11:f74366f76f700cc6e991285892ad7a23c30e6d47 - Download
zlib/1.2.11: Retrieving package f74366f76f700cc6e991285892ad7a23c30e6d47 from remote 'conan-center'
Downloading conanmanifest.txt completed [0.25k]
Downloading conaninfo.txt completed [0.44k]
Downloading conan_package.tgz completed [83.15k]
Decompressing conan_package.tgz completed [0.00k]
zlib/1.2.11: Package installed f74366f76f700cc6e991285892ad7a23c30e6d47
zlib/1.2.11: Downloaded package revision 0
openssl/1.0.2t: Retrieving package eb50d18a5a5d59bd0c332464a4c348ab65e353bf from remote 'conan-center'
Downloading conanmanifest.txt completed [4.92k]
Downloading conaninfo.txt completed [1.28k]
Downloading conan_package.tgz completed [3048.81k]
Decompressing conan_package.tgz completed [0.00k]
openssl/1.0.2t: Package installed eb50d18a5a5d59bd0c332464a4c348ab65e353bf
openssl/1.0.2t: Downloaded package revision 0
poco/1.9.4: Retrieving package 645aaff0a79e6036c77803601e44677556109dd9 from remote 'conan-center'
Downloading conanmanifest.txt completed [48.75k]
Downloading conaninfo.txt completed [2.44k]
Downloading conan_package.tgz completed [5128.39k]
Decompressing conan_package.tgz completed [0.00k]
poco/1.9.4: Package installed 645aaff0a79e6036c77803601e44677556109dd9
poco/1.9.4: Downloaded package revision 0
conanfile.txt: Generator cmake created conanbuildinfo.cmake
conanfile.txt: Generator txt created conanbuildinfo.txt
conanfile.txt: Generated conaninfo.txt
conanfile.txt: Generated graphinfo
Conan安装了我们的Poco依赖关系,还安装了 Poco 的依赖包:OpenSSL 和 zlib。它还为我们的构建系统生成了conanbuildinfo.cmake文件。
6、现在,我们来创建构建文件。要注入 Conan 信息,请包含生成的 conanbuildinfo.cmake 文件,如下所示:
cmake_minimum_required(VERSION 2.8.12)
project(MD5Encrypter)
add_definitions("-std=c++11")
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
add_executable(md5 md5.cpp)
target_link_libraries(md5 ${CONAN_LIBS})
7、现在,我们准备构建并运行我们的Encrypter应用程序:
(win)
$ cmake .. -G "Visual Studio 16"
$ cmake --build . --config Release
(linux, mac)
$ cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
$ cmake --build .
...
[100%] Built target md5
$ ./bin/md5
c3fcd3d76192e4007dfb496cca67e13b