![]() ![]() It also didn’t help that we were reading Conan’s documentation rather chaotically: I remember I was googling for something like “ Conan package pre-built binaries” and getting directly to those pages without properly studying the rest of the documentation.Īnyway, having covered dependencies of the pilot project ( one of our libraries) with Conan, we invited a couple of other teams to test it out, and immediately it turned out that they use a different combination of platforms/compilers, which we didn’t pre-build for, and so they had to force/override specific versions ( for example, with -s compiler.toolset="v142" and -DCONAN_DISABLE_CHECK_COMPILER=1), as they were not able to build missing binaries ( because we did not implement the build() method in recipes).īut even that was not all, as users ( understandably) wanted to fetch 3rd-party dependencies from Conan Center and our packages from our Artifactory, while we were fetching everything from our Artifactory ( using different user/channel values too), and such a situation isn’t handled too nicely with Conan ( or we didn’t find a way).įinally, not everyone in our team liked the idea of complicating the build toolchain by adding yet another tool, because not only one needs to run one more thing before building the project, but also the installation of that thing isn’t very straightforward, as one needs to have Python, pip and only then Conan can be installed. Why didn’t we do so? Well, we have been already working with other package managers before - APT/deb, NuGet, npm and others that our users were requesting - and these packages are mostly just archives with certain meta-information, and that is how we were looking at Conan too, not expecting it to also be able to manage building. So yeah, perhaps if we chose to integrate Conan into our buildsystem and build dependencies from sources, the result would be better ( faster). So we were not making source packages and were not implementing the build() method in recipes.Įffectively, we were prebuilding all our dependencies for all the platforms that we target, and that turned out to be very ( very) time-consuming, so we pretty much didn’t progress beyond that small subset of dependencies from the pilot project created during research. At the first glance it seemed that integrating Conan as a part of our build system would be too disruptive, so we decided to just pack pre-built artifacts from the install destination with export-pkg -pf. I think, this is because we chose a wrong approach to it. Multiple targets/components in one project.I never thought I’ll be looking at vcpkg again, but recently I discovered that some teams have been switching from Conan to vcpkg, which sounded intriguing and promising, as we still needed a package manager for our projects. I’ve heard about vcpkg before and even tried to make a vcpkg package for one library a couple of years ago, but back then I didn’t find documentation for this ( as I now understand, that’s because one does not really create a “package”) and abandonned the task. And then a couple of weeks ago I started looking into vcpkg. The research went well, but we never actually proceeded with switching to Conan for the whole project. ![]() Thanks in advance, if you need more information please let me know.More than half a year ago I was trying out Conan package manager for resolving dependencies in our C++ project. So according to ninjas output there is more todo than just generating the code, however its not beeing executed.Ĭan someone give me a hint on what am I doing wrong or how I can achieve this? Or is there a problem with CMake and ninja? However in practice this code doesnt seem to work, the command is executed but after it is executed some_lib is not beeing rebuild, though the timestamps of the output files (some_source.c) of the custom command are newer than the library. Now if some_input.xml is changed I want to also rebuild some_lib. #some_source.c may be modified by the following custom commandĬOMMAND $/generated)Īdd_dependencies(some_lib generate_something) The source for this code is within the source-tree and it must stay there, I have no freedom here. The library is depending on some code which may be generated before-hand by a custom command. Iam using CMake together with ninja to build a library. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |