Expose both shared and static libraries as separate CMake imported targets (ghostty-vt and ghostty-vt-static) rather than toggling between them with BUILD_SHARED_LIBS. The zig build already produces both in a single invocation, so both are always available. The find_package config template is updated to export both targets as ghostty-vt::ghostty-vt and ghostty-vt::ghostty-vt-static. Add a c-vt-cmake-static example that demonstrates linking the static library via FetchContent with -Dsimd=false to avoid C++ runtime dependencies.
CMake Support for libghostty-vt
The top-level CMakeLists.txt wraps the Zig build system so that CMake
projects can consume libghostty-vt without invoking zig build manually.
Running cmake --build triggers zig build -Demit-lib-vt automatically.
This means downstream projects do require a working Zig compiler on
PATH to build, but don't need to know any Zig-specific details.
Using FetchContent (recommended)
Add the following to your project's CMakeLists.txt:
include(FetchContent)
FetchContent_Declare(ghostty
GIT_REPOSITORY https://github.com/ghostty-org/ghostty.git
GIT_TAG main
)
FetchContent_MakeAvailable(ghostty)
add_executable(myapp main.c)
target_link_libraries(myapp PRIVATE ghostty-vt)
This fetches the Ghostty source, builds libghostty-vt via Zig during your CMake build, and links it into your target. Headers are added to the include path automatically.
Using a local checkout
If you already have the Ghostty source checked out, skip the download by pointing CMake at it:
cmake -B build -DFETCHCONTENT_SOURCE_DIR_GHOSTTY=/path/to/ghostty
cmake --build build
Using find_package (install-based)
Build and install libghostty-vt first:
cd /path/to/ghostty
cmake -B build
cmake --build build
cmake --install build --prefix /usr/local
Then in your project:
find_package(ghostty-vt REQUIRED)
add_executable(myapp main.c)
target_link_libraries(myapp PRIVATE ghostty-vt::ghostty-vt)
Files
ghostty-vt-config.cmake.in— template for the CMake package config file installed alongside the library, enablingfind_package()support.
Example
See example/c-vt-cmake/ for a complete working example.