# FTXUI: CMake

Loading...
Searching...
No Matches
CMake

This page explains how to depend on FTXUI using CMake.

# Methods of Integration

## Using FetchContent

This approach downloads FTXUI at configure time and doesn't require a system-wide install.

include(FetchContent)
FetchContent_Declare(ftxui
GIT_REPOSITORY https://github.com/ArthurSonzogni/FTXUI
GIT_TAG v6.1.9 # Replace with a version, tag, or commit hash
)
FetchContent_MakeAvailable(ftxui)
add_executable(main main.cpp)
target_link_libraries(main
PRIVATE ftxui::screen
PRIVATE ftxui::dom
PRIVATE ftxui::component
)

This ensures reproducible builds and easy dependency management.

## Using find_package

If FTXUI is installed system-wide or via a package manager (e.g. vcpkg or Conan), you can use:

find_package(ftxui REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main
PRIVATE ftxui::screen
PRIVATE ftxui::dom
PRIVATE ftxui::component
)

Make sure the package is visible in your `CMAKE_PREFIX_PATH`.

## Using git submodule

You can also add FTXUI as a Git submodule, keeping it as part of your repository:

git submodule add https://github.com/ArthurSonzogni/FTXUI external/ftxui
git submodule update --init --recursive

When cloning a repository that already includes FTXUI as a submodule, make sure to fetch submodules with:

git clone --recurse-submodules <your-repo>
# Or, if already cloned:
git submodule update --init --recursive

Then in your `CMakeLists.txt`:

add_subdirectory(external/ftxui)
add_executable(main main.cpp)
target_link_libraries(main
PRIVATE ftxui::screen
PRIVATE ftxui::dom
PRIVATE ftxui::component
)

This approach works well if you want to vendor FTXUI in your own repository.

# Optional CMake Flags

FTXUI supports the following CMake options:

Option | Description | Default
--- | --- | ---
FTXUI_BUILD_EXAMPLES | Build bundled examples | OFF
FTXUI_BUILD_DOCS | Build the documentation | OFF
FTXUI_BUILD_TESTS | Enable tests | OFF
FTXUI_ENABLE_INSTALL | Generate install targets | ON
FTXUI_MICROSOFT_TERMINAL_FALLBACK | Improve Windows compatibility | ON/OFF

To enable an option:

cmake -DFTXUI_BUILD_EXAMPLES=ON ..

# Verifying Integration

To confirm the setup is working, build and run a minimal example. If you need a complete template, see: ftxui-starter

Previous
Getting Started