Несмотря на солидный возраст С++, одной из больших проблем, возникающих при разработке с его использованием, до сих пор является управление зависимостям. Особенно остро этот вопрос возникает при наличии нескольких различных целевых платформ. В докладе будет рассмотрено, как менеджер пакетов Conan.io позволяет решить проблему управления зависимостями и, как следствие, значительно улучшить скорость разработки на C++ и повысить модульность разрабатываемых систем.
13. 12
NOW WE WANT TO USE GOOGLETESTNOW WE WANT TO USE GOOGLETEST
#include <sstream>
#include <iostream>
#include <gtest/gtest.h>
#include <hello.h>
TEST(hello, simple) {
std::stringstream ss;
hello(ss);
ASSERT_EQ("Hello, world", ss.str());
}
But how build it on CI?
14. 13
HERE COMES CONANHERE COMES CONAN
pip install conan
conanfile.txt
[requires]
gtest/1.7.0@lasote/stable
[generators]
cmake
CMakeLists.txt
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
16. 15
IF NO BINARY PACKAGE FOUNDIF NO BINARY PACKAGE FOUND
$conan install --build=missing
gtest/1.7.0: WARN: Binary for ad55876aa not in remote: Package not found!
gtest/1.7.0: Building your package in ~/.conan/data/gtest/1.7.0/lasote
gtest/1.7.0: Configuring sources in ~/.conan/data/gtest/1.7.0/lasote/stable/
[==================================================]
Unzipping 4.8 MB, this can take a while
gtest/1.7.0: Copying sources to build folder
gtest/1.7.0: Generated cmake created conanbuildinfo.cmake
-- The C compiler identification is GNU 6.1.1
-- The CXX compiler identification is GNU 6.1.1
...
gtest/1.7.0 package(): Copied 20 '.h' files
gtest/1.7.0 package(): Copied 2 '.so' files: libgtest_main.so, libgtest.so
gtest/1.7.0: Package 'ad55876aa' created
PROJECT: Generated cmake created conanbuildinfo.cmake
PROJECT: Generated conaninfo.txt
17. 16
USING CONAN ON CIUSING CONAN ON CI
.travis.yml
before_install:
- sudo pip install conan
install:
- conan install --build=missing
appveyor.yml
install:
- set PATH=%PATH%;%PYTHON%/Scripts/
- pip.exe install conan # It install conan too
- conan install --build=missing
29. 26
CONCLUSIONSCONCLUSIONS
Positive points
build scripts on python
public repository
private repository
build matrix
Negative points
build scripts on python
small number of packages in the official repository
small amount of documentation
30. 27
REFERENCESREFERENCES
Conan - C/C++ package manager - ,1.
conan.io c++ package manager demo with sfml -2.
CppCon 2014: Lightning Talks - Boris Kolpackov "C++
Package Manager" -
3.
Diego Rodriguez-Losada: Biicode, a C/C++ dependency
manager with a hosting service -
4.
Diego Rodriguez-Losada: Why in heaven is there no
dependency management for C++? -
5.
Arne Mertz, Using Conan for Third Party Libraries -6.
Programming C++ With The 4 Cs: Clang, Cmake, Clion
And Conan -
7.
Site Source
Video
Video
Video
Video
Blogpost
Blogpost
31. 28
THANK YOU FOR YOUR ATTENTION!THANK YOU FOR YOUR ATTENTION!
Contacts:
email Pavel.Filonov@kaspersky.com
github
twitter @filonovpv
sdukshis