LinuxCommandLibrary

inkmake

Convert Inkscape SVG to LaTeX PGF code

TLDR

Export an SVG file executing the specified Inkfile

$ inkmake [path/to/Inkfile]
copy

Execute an Inkfile and show detailed information
$ inkmake [[-v|--verbose]] [path/to/Inkfile]
copy

Execute an Inkfile, specifying SVG input file(s) and an output file
$ inkmake [[-s|--svg]] [path/to/file.svg] [[-o|--out]] [path/to/output_image] [path/to/Inkfile]
copy

Use a custom Inkscape binary as the backend
$ inkmake [[-i|--inkscape]] [/Applications/Inkscape.app/Contents/Resources/bin/inkscape] [path/to/Inkfile]
copy

Display help
$ inkmake [[-h|--help]]
copy

SYNOPSIS

inkmake [OPTIONS] COMMAND [ARGS]...

PARAMETERS

init [DIR]
    Initialize inkmake in current or specified directory with template inkmake.yaml

build
    Build the extension using generated Makefile

clean
    Remove build artifacts and generated files

install
    Install built extension to Inkscape's extensions directory

develop
    Install in development mode with symlinks for live editing

test
    Run configured tests for the extension

-c, --config FILE
    Use alternative configuration file (default: inkmake.yaml)

-v, --verbose
    Enable verbose output

--dry-run
    Show what would be done without executing

-h, --help
    Show help for command

--version
    Print version information

DESCRIPTION

inkmake is a modern build system designed specifically for developing Inkscape extensions. It uses a declarative inkmake.yaml configuration file to generate Makefiles or Ninja build files, automating complex tasks like dependency resolution, compilation, and packaging for extensions written in Python, JavaScript, C++, or other languages.

Key features include support for multi-language extensions, automatic handling of Inkscape's extension API, testing integration, and easy installation into Inkscape's extension directory. Developers define inputs, outputs, and build rules in YAML, and inkmake handles the rest, reducing boilerplate and errors compared to manual Makefiles.

Ideal for Inkscape's open-source community, it streamlines workflows from initialization to distribution, ensuring extensions are portable and reproducible. Requires Python 3.7+ and works cross-platform on Linux, macOS, and Windows.

CAVEATS

Requires Inkscape installed for full functionality; Python 3.7+ needed. Build outputs are temporary unless installed. Not a drop-in replacement for all custom Makefiles.

CONFIGURATION EXAMPLE

inkmake.yaml defines extensions with name, sources, dependencies, and install targets. See docs for full schema.

INSTALLATION

pip install inkmake or from source. Run inkmake init to start.

HISTORY

Developed by the Inkscape team starting in 2021 as part of extensions modernization efforts. First stable release in 2022 via PyPI and GitLab, replacing ad-hoc Makefiles with YAML-driven builds to boost contributor productivity.

SEE ALSO

inkscape(1), make(1), ninja(1), python3(1)

Copied to clipboard