Skip to main content

Simple dependencies manager for cmake projects in your workspace

Project description

wks: Simple CMake workspace manager

How it works

The basic purpose of wks is to spawn repositories to build a project, then generate a CMakeLists.txt containing add_subdirectory() directives for all of them.

This way, the project can be built using the top-level generated CMakeLists.txt.

Usage

The following commands are available:

  • wks install [repository]: If a repository is given, wks will install it first. Then, wks will scan for dependencies in the wks.yml files (see below) and install them until all requirements are met. This way, it is possible that dependencies of dependencies are installed. Calling wks install without repository argument will cause dependencies scan. The CMakeLists.txt will eventually be generated.
  • wks cmake: This will cause the CMakeLists.txt to be re-generated.
  • wks build [target]: Will create a build and run it. wks will try to create a Ninja build, and fall back to makefiles if it is not available. The [target] you can pass will be given to the build command (make [target] or ninja [target]). The build will be stored in build/ directory.
  • wks pull: Will run a git pull in all repositories. This will then scan for dependencies (equivalent to wks install with no argument) and re-generate the CMakeLists.txt.
  • wks status: Gives insight on the status of your repositories, this will check for:
    • Untracked files
    • Changes without commits
    • Changes commited but not pushed

All sources will be stored in src/, under src/vendor/repository.

Repositories format

All repositories are fetched for GitHub, and repositories can have those formats:

  • vendor/repository
  • vendor/repository#branch
  • vendor/repository@tag

The wks.yml file

The wks.yml can contain the following sections:

  • deps: a list of dependencies that the repository want to be installed
  • optional: a list of optional dependencies, they will not be installed but it ensure that the projects will appear in the proper order in the generated CMakeLists.txt
  • cmakes: if the CMakeLists.txt for this repository is not at the top level (or not unique), you can specify them using this section
  • install: a list of shell command that should be run post install
  • cmake_prefix: a list of directories to be added to CMAKE_PREFIX_PATH

An example is:

deps:
    - rhoban/utils@v1.0
    - rhoban/geometry@v2.0

cmakes:
    - client
    - server

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wks-0.3.3.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

wks-0.3.3-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file wks-0.3.3.tar.gz.

File metadata

  • Download URL: wks-0.3.3.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for wks-0.3.3.tar.gz
Algorithm Hash digest
SHA256 784834d72a266079275693fdf253a21c8e7ee1ea2943a94fe32c7cea8cf472a4
MD5 066700498e6c2e687efaa72f8287c984
BLAKE2b-256 cbfa65bd0dda04f4d4d6c769d767389efe52196f1e793ddc1e92d51010de29b9

See more details on using hashes here.

File details

Details for the file wks-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: wks-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for wks-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 214d10ab40df8431ca2a8bba2bc53ae18bf6d034853005d1209c7fda5a06ad6a
MD5 3161c51fafa4e68ba6b2dec5978a6bdf
BLAKE2b-256 b97ed74ec26acbe4288c59153d6588fc52f780057b1d0f40428df53fff7a96a1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page