cpm-cmake / CPM.cmake

📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.
MIT License
2.88k stars 182 forks source link

CPM on monorepos #535

Open gshanemiller opened 7 months ago

gshanemiller commented 7 months ago

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!

TheLartians commented 7 months ago

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.