A CMake module for downloading external project source code at configure time for integration via add_subdirectory().
DownloadProject is a CMake module that downloads external project source code during CMake's configure step, allowing it to be integrated into the main build using add_subdirectory(). It solves the problem of managing external dependencies in CMake builds by making external project targets directly available without additional setup.
CMake users and C++ developers who need to integrate external libraries or projects into their CMake-based build systems without complex external project handling.
Developers choose DownloadProject for its simplicity and seamless integration, enabling direct use of add_subdirectory() for external dependencies, which simplifies build configuration and improves maintainability compared to traditional external project methods.
This repository is no longer maintained. Use the FetchContent module available in CMake 3.11 or later instead.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Downloads external source during CMake's configure step, enabling immediate use with add_subdirectory(), as highlighted in the README for seamless build integration.
Makes all external project targets directly accessible, simplifying dependency management compared to ExternalProject_Add, per the project's value proposition.
Includes a working example with googletest to demonstrate the technique, aiding developers in implementation, as shown in the README.
Build status is provided for Linux, Mac OSX, and Windows, indicating robust support across different operating systems.
Depends on successful downloads during configure, which can fail due to network problems, and lacks built-in retry or offline fallback mechanisms.
Only handles source code downloads; does not support binary artifacts or pre-compiled libraries, restricting its use in some scenarios.
Requires developers to specify download URLs and manage versions manually, increasing setup complexity and maintenance effort.