If someone has been following my posts, they would sure know, I write C++
for most of the time, I spent to write any piece of code. The reaction to which most people resonate is, “ouch, you write c++, that must be really tough”. To all of the people with this reaction, to be writing python is harder than C++
. Okay, enough, lets come to today’s topic, conan
, a lot of times, I find people using the argument that, C++
doesn’t have any package manager like the other languages. Wrong, C++
has a bunch of package managers, just no standard ones and conan
is one of them. Last week, I took it for a test drive, since up to now, what I did was pulled in dependencies with the help of git submodules.
conan
is developed using python, so it is available in PyPI. But the first thing I noticed, was that, they didn’t have an IRC channel for queries, that is not something astonishing in this decade, but instead they had a Slack channel, which, to be fair, I don’t understand. Other than I didn’t find any real time chat for support, 😯. Ohh, conan
being written in python saves a lot of hassle to install it, just a pip3 install conan --user
will suffice.
The getting started page of the manual, listed an example of using poco library, easy to follow and replicate. And to be fair, I was remotely interested in reading the manual, I was more into getting a basic Qt
project to work and increment the number of libraries one at a time.
Getting a basic Qt project was easy, also, the ability to use Python to write the configuration files, was a bonus. But as soon as I added GTest, the python configuration just, blew up. I had to resort the generic txt
configuration format, for the fact that, it was not able to find the headers for GTest in the python configuration file, why, I don’t know. But anyway, the best part was I could hook it up in my build system without any changes to CMake files. The configuration file looked liked this,
[requires]
qt/5.12.5@bincrafters/stable
gtest/1.8.1@bincrafters/stable
[generators]
cmake
[options]
qt:shared=True
And just a couple more lines, to the top level CMakeLists.txt
file,
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
If I want to add more stuff then, I just do a conan search <library name> --remote=<remote>
and add that under the [requires]
section. I was told that conan
had some problems with the KDE stuff, like platform specific plugins and all, but I am yet to try that, :wq
for now, 🙂.