build tectonic with vcpkg on Windows, Linux or macOS

prerequisites

This guide assumes you have git installed and are comfortable using the command-line.

setting up your environment

If you are running macOS prior to 10.15 (Catalina), or a version of Xcode that is not up to date, you may need to install gcc. Windows and Linux should be ready to go if you have a recent compiler installed.

Install cargo-vcpkg

cargo install cargo-vcpkg

Install tectonic dependencies using vcpkg

$ cargo vcpkg build
		Cloning https://github.com/microsoft/vcpkg
	cargo build
		Checkout rev 6d36e2a
	Compiling vcpkg
	Installing freetype harfbuzz[icu,graphite2]
	Compiling bzip2 (triplet x64-osx)
	Compiling zlib (triplet x64-osx)
	Compiling libpng (triplet x64-osx)
	Compiling freetype (triplet x64-osx)
	Compiling libiconv (triplet x64-osx)
	Compiling gettext (triplet x64-osx)
	Compiling graphite2 (triplet x64-osx)
	Compiling icu (triplet x64-osx)
	Compiling ragel (triplet x64-osx)
	Compiling harfbuzz (triplet x64-osx)
		Finished in 247.89s

Build tectonic

Now we need to configure tectonic so it knows we are using vcpkg to build the binary. This is done by setting the TECTONIC_DEP_BACKEND environment variable. TECTONIC_DEP_BACKEND="vcpkg" tells tectonic to use vcpkg instead of trying to resolve the libraries using pkgconfig.

For Linux and macOS, run cargo build with the appropriate environment variables, like this:

TECTONIC_DEP_BACKEND="vcpkg" cargo build --release

Or on Windows, like this for powershell:

$Env:TECTONIC_DEP_BACKEND="vcpkg"
$Env:RUSTFLAGS="-Ctarget-feature=+crt-static"
cargo build --release

Or like this for cmd:

set TECTONIC_DEP_BACKEND="vcpkg"
set RUSTFLAGS="-Ctarget-feature=+crt-static"
cargo build --release

This will take a couple of minutes but should eventually print something like:

    Finished release [optimized] target(s) in 3m 39s

The binary should be in target/release.

Install gcc on macOS

If the cargo vcpkg build step fails on macOS, you may need to install another compiler. One way to do this is using homebrew to install gcc.

brew install gcc