You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CPM's ability to fetch dependencies from Github is cool, and something I will eventually get to. I also like there's no need for 61 million helper files like conan or vpkg.
However, in the present case I have a large mono repository ~25 million lines of C/C+ code. This repository has ~250 libraries all inside the repo. As such there is no need to fetch from Github. The libraries are organized with a canonical layout that makes it easy to scan and discover.
Here's what I want to do:
run a script (that I will provide) to scan the libraries
from each library create CPM cmake code for that library and its dependencies. Dependencies, say lib_network depends on lib_network_async will come from meta data I provide
use the output of the previous bullet to autogenerate a Cmakefile with CPM CPMAddPackage commands
logically extend dependencies in CMakeLists.txt for all the tasks, unit tests, integration tests
cmake to build
Desired impact:
Other than manually specifying the dependencies between libraries in a meta-file, the full CMakeLists.txt file is auto-built
Later I can move individual libraries to Github while keeping the overall process and structure unchanged
Now this will require a CPMAddPackage to understand a dependency is not in github, but rather it's in a directory tree.
Once I have that I can move individual libraries into their own Git repo and revert to CPMAddPackage with Githib urls.
Feasible? My guess: this is not a good use-case since CMake does this out of the box.
Rather once libraries are migrated to standalone Git repos then CPM is well suited.
If I understand correctly, your plan is to replace add_subdirectory with CPM calls to treat the subdirectories as individual projects and be able to migrate easier in the future? In that case, yes this is common and a very much supported use-case with CPM, using the SOURCE_DIR option. See here for an example how to include a directory relative to the current CMakeLists.
CPM's ability to fetch dependencies from Github is cool, and something I will eventually get to. I also like there's no need for 61 million helper files like conan or vpkg.
However, in the present case I have a large mono repository ~25 million lines of C/C+ code. This repository has ~250 libraries all inside the repo. As such there is no need to fetch from Github. The libraries are organized with a canonical layout that makes it easy to scan and discover.
Here's what I want to do:
Desired impact:
Now this will require a CPMAddPackage to understand a dependency is not in github, but rather it's in a directory tree.
Once I have that I can move individual libraries into their own Git repo and revert to CPMAddPackage with Githib urls.
Feasible? My guess: this is not a good use-case since CMake does this out of the box.
Rather once libraries are migrated to standalone Git repos then CPM is well suited.
Meanwhile I'll read your https://gitlab.com/external-packages/cpm.cmake carefully.
Regards!
The text was updated successfully, but these errors were encountered: