2.2 KiB
Depper Dan
Windows Library Builds made easi(er)
About
Depper Dan is a collection of scripts to enable (CMake based) C++ projects with a set of open source dependencies to build them automatically.
Motivation
Unlike Linuxoid systems, C++ projects that use Open Source dependencies traditionally have a hard time building those dependencies, especially automatic, with custom build settings or when they depend on one another.
This script realizes this in a re-usable and extendable manner but only for a limited set of libraries. It is meant to be used with Visual Studio 2022 for build tools and modern CMake.
Usage
Prerequisites
- Visual Studio (2022 was what this was developed for but others might work)
- git (available in the Path)
- CMake (available in the Path)
- Python (3.11, 3.12, etc)
- This repository, checked out and with temporary disk space
Available packages
Each package that can be built with this system must be
given in packages.jon. For every package therein, you will
find a build script in the folder build_functions.
Build
To use the system, you must specify an installation folder.
It should have as short a name as possible (on windows) to avoid MAX_PATH issues
which may arise out of any build.
In the examples below we will use C:\devel\3rd_party.
This directory will be used to install each package built
with Depper Dan and it should be considered stable and system
wide.
As a shell, use "x64 Native Tools Command Prompt" to ensure the correct build tools and environment being set.
Create a venv unless it's already present and activate it
> cd /depper/dan/repo
> python -m venv .venv
> .venv\Scripts\Activate
Build a single package into your installation dir
> python .\depper_dan.py -i C:\devel\3rd_party -p zlib
Extension
This script is meant to be hacked on. It is not meant to be a complete extensible package manager like conan or vcpkg.
Extending it by more packages generally involves:
- Add package information in
packages.jon. - Add a build function in
build_functions.
License
Depper Dan is being published under the Apache License 2.0