bd44b5aa08
Test / build-libghostty-vt (x86_64-windows-gnu) (push) Has been cancelled
Test / build-libghostty-vt-macos (aarch64-ios) (push) Has been cancelled
Test / build-libghostty-vt-macos (aarch64-macos) (push) Has been cancelled
Test / build-libghostty-vt-macos (x86_64-macos) (push) Has been cancelled
Test / build-nix (namespace-profile-ghostty-md-arm64) (push) Has been cancelled
Test / build-dist (push) Has been cancelled
Test / GTK x11=true wayland=true (push) Has been cancelled
Test / Build -Dsimd=false (push) Has been cancelled
Test / Build -Dsimd=true (push) Has been cancelled
Test / Build -Dsentry=false (push) Has been cancelled
Test / Build -Dsentry=true (push) Has been cancelled
Test / zig-fmt (push) Has been cancelled
Test / GitHub Actions Pins (push) Has been cancelled
Test / prettier (push) Has been cancelled
Test / swiftlint (push) Has been cancelled
Test / alejandra (push) Has been cancelled
Test / typos (push) Has been cancelled
Nix / Required Checks: Nix (push) Has been cancelled
Nix / check-zig-cache-hash (push) Has been cancelled
Test / skip (push) Has been cancelled
Test / Required Checks: Test (push) Has been cancelled
Test / build-bench (push) Has been cancelled
Test / list-examples (push) Has been cancelled
Test / Example ${{ matrix.dir }} (Windows) (push) Has been cancelled
Test / build-cmake (push) Has been cancelled
Test / test-lib-vt-pkgconfig (push) Has been cancelled
Test / build-flatpak (push) Has been cancelled
Test / build-snap (push) Has been cancelled
Test / build-libghostty-vt (aarch64-linux) (push) Has been cancelled
Test / build-libghostty-vt (aarch64-macos) (push) Has been cancelled
Test / build-libghostty-vt (wasm32-freestanding) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-linux) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-linux-musl) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-macos) (push) Has been cancelled
Test / build-libghostty-vt-android (aarch64-linux-android) (push) Has been cancelled
Test / build-libghostty-vt-android (arm-linux-androideabi) (push) Has been cancelled
Test / build-libghostty-vt-android (x86_64-linux-android) (push) Has been cancelled
Test / build-libghostty-vt-windows (push) Has been cancelled
Test / build-libghostty-windows-gnu (push) Has been cancelled
Test / build-linux (namespace-profile-ghostty-md) (push) Has been cancelled
Test / build-linux (namespace-profile-ghostty-md-arm64) (push) Has been cancelled
Test / build-linux-libghostty (push) Has been cancelled
Test / build-nix (namespace-profile-ghostty-md) (push) Has been cancelled
Test / build-dist-lib-vt (push) Has been cancelled
Test / trigger-snap (push) Has been cancelled
Test / trigger-flatpak (push) Has been cancelled
Test / build-macos (push) Has been cancelled
Test / build-macos-freetype (push) Has been cancelled
Test / test (push) Has been cancelled
Test / test-lib-vt (push) Has been cancelled
Test / GTK x11=false wayland=false (push) Has been cancelled
Test / GTK x11=true wayland=false (push) Has been cancelled
Test / GTK x11=false wayland=true (push) Has been cancelled
Test / test-macos (push) Has been cancelled
Test / test-windows (push) Has been cancelled
Test / Build -Di18n=false (push) Has been cancelled
Test / Build -Di18n=true (push) Has been cancelled
Test / Build test/fuzz-libghostty (push) Has been cancelled
Test / shellcheck (push) Has been cancelled
Test / translations (push) Has been cancelled
Test / blueprint-compiler (push) Has been cancelled
Test / Test pkg/wuffs (push) Has been cancelled
Test / Test build on Debian 13 (push) Has been cancelled
Test / valgrind (push) Has been cancelled
Test / Example ${{ matrix.dir }} (push) Has been cancelled
103 lines
2.9 KiB
Markdown
103 lines
2.9 KiB
Markdown
# 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`:
|
|
|
|
```cmake
|
|
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:
|
|
|
|
```shell-session
|
|
cmake -B build -DFETCHCONTENT_SOURCE_DIR_GHOSTTY=/path/to/ghostty
|
|
cmake --build build
|
|
```
|
|
|
|
## Using find_package (install-based)
|
|
|
|
Build and install libghostty-vt first:
|
|
|
|
```shell-session
|
|
cd /path/to/ghostty
|
|
cmake -B build
|
|
cmake --build build
|
|
cmake --install build --prefix /usr/local
|
|
```
|
|
|
|
Then in your project:
|
|
|
|
```cmake
|
|
find_package(ghostty-vt REQUIRED)
|
|
|
|
add_executable(myapp main.c)
|
|
target_link_libraries(myapp PRIVATE ghostty-vt::ghostty-vt)
|
|
```
|
|
|
|
## Cross-compilation
|
|
|
|
For cross-compiling to a different Zig target triple, use
|
|
`ghostty_vt_add_target()` after `FetchContent_MakeAvailable`:
|
|
|
|
```cmake
|
|
FetchContent_MakeAvailable(ghostty)
|
|
ghostty_vt_add_target(NAME linux-amd64 ZIG_TARGET x86_64-linux-gnu)
|
|
|
|
add_executable(myapp main.c)
|
|
target_link_libraries(myapp PRIVATE ghostty-vt-static-linux-amd64)
|
|
```
|
|
|
|
### Using zig cc as the C/CXX compiler
|
|
|
|
When cross-compiling, the host C compiler can't link binaries for the
|
|
target platform. `GhosttyZigCompiler.cmake` provides
|
|
`ghostty_zig_compiler()` to set up `zig cc` as the C/CXX compiler for
|
|
the cross target. It creates wrapper scripts (shell on Unix, `.cmd` on
|
|
Windows) and configures `CMAKE_C_COMPILER`, `CMAKE_CXX_COMPILER`, and
|
|
`CMAKE_SYSTEM_NAME`.
|
|
|
|
The module is self-contained — copy it into your project (e.g. to
|
|
`cmake/`) and include it directly. It cannot be consumed via
|
|
FetchContent because it must run before `project()`, but
|
|
`FetchContent_MakeAvailable` triggers `project()` internally:
|
|
|
|
```cmake
|
|
cmake_minimum_required(VERSION 3.19)
|
|
|
|
include(cmake/GhosttyZigCompiler.cmake)
|
|
ghostty_zig_compiler(ZIG_TARGET x86_64-linux-gnu)
|
|
|
|
project(myapp LANGUAGES C CXX)
|
|
|
|
FetchContent_MakeAvailable(ghostty)
|
|
ghostty_vt_add_target(NAME linux-amd64 ZIG_TARGET x86_64-linux-gnu)
|
|
|
|
add_executable(myapp main.c)
|
|
target_link_libraries(myapp PRIVATE ghostty-vt-static-linux-amd64)
|
|
```
|
|
|
|
See `example/c-vt-cmake-cross/` for a complete working example.
|