FTXUI/cmake/ftxui_modules.cmake

83 lines
2.2 KiB
CMake
Raw Normal View History

2025-04-10 20:45:45 +08:00
if (NOT FTXUI_BUILD_MODULES)
return()
endif()
add_library(ftxui-modules)
target_sources(ftxui-modules
2025-04-11 21:07:58 +08:00
PUBLIC FILE_SET CXX_MODULES FILES
2025-04-10 20:45:45 +08:00
src/ftxui/component.cppm
2025-06-04 01:25:03 +08:00
src/ftxui/component/animation.cppm
src/ftxui/component/captured_mouse.cppm
src/ftxui/component/component.cppm
src/ftxui/component/component_base.cppm
src/ftxui/component/component_options.cppm
src/ftxui/component/event.cppm
src/ftxui/component/loop.cppm
src/ftxui/component/mouse.cppm
src/ftxui/component/receiver.cppm
src/ftxui/component/screen_interactive.cppm
src/ftxui/component/task.cppm
2025-04-10 20:45:45 +08:00
src/ftxui/dom.cppm
2025-06-04 01:25:03 +08:00
src/ftxui/dom/canvas.cppm
src/ftxui/dom/deprecated.cppm
src/ftxui/dom/direction.cppm
src/ftxui/dom/elements.cppm
src/ftxui/dom/flexbox_config.cppm
src/ftxui/dom/linear_gradient.cppm
src/ftxui/dom/node.cppm
src/ftxui/dom/requirement.cppm
src/ftxui/dom/selection.cppm
src/ftxui/dom/table.cppm
2025-04-10 20:45:45 +08:00
src/ftxui/screen.cppm
2025-06-04 01:25:03 +08:00
src/ftxui/screen/box.cppm
src/ftxui/screen/color.cppm
src/ftxui/screen/color_info.cppm
src/ftxui/screen/deprecated.cppm
src/ftxui/screen/image.cppm
src/ftxui/screen/pixel.cppm
src/ftxui/screen/screen.cppm
src/ftxui/screen/string.cppm
src/ftxui/screen/terminal.cppm
2025-04-10 20:45:45 +08:00
src/ftxui/util.cppm
2025-06-04 01:25:03 +08:00
src/ftxui/util/autoreset.cppm
src/ftxui/util/ref.cppm
2025-04-10 20:45:45 +08:00
)
target_link_libraries(ftxui-modules
PUBLIC
2025-06-02 16:28:16 +08:00
ftxui::screen
ftxui::dom
ftxui::component
)
2025-04-10 20:45:45 +08:00
target_compile_features(ftxui-modules PUBLIC cxx_std_20)
2025-06-04 01:25:03 +08:00
# TODO: Explain why this is needed.
2025-04-11 21:07:58 +08:00
if (CMAKE_COMPILER_IS_GNUCXX)
2025-06-02 16:20:05 +08:00
target_compile_options(ftxui-modules PUBLIC -fmodules-ts)
2025-04-11 21:07:58 +08:00
endif ()
2025-04-10 20:45:45 +08:00
add_library(ftxui::modules ALIAS ftxui-modules)
if(FTXUI_ENABLE_INSTALL)
2025-04-11 21:07:58 +08:00
2025-06-02 16:28:16 +08:00
include(GNUInstallDirs)
2025-04-11 21:07:58 +08:00
2025-06-02 16:28:16 +08:00
install(TARGETS ftxui-modules
2025-04-10 20:45:45 +08:00
EXPORT ftxui-targets
2025-04-11 21:07:58 +08:00
FILE_SET CXX_MODULES
2025-06-02 16:28:16 +08:00
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui
2025-04-11 21:07:58 +08:00
FILE_SET HEADERS
2025-06-02 16:28:16 +08:00
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui
2025-04-11 21:07:58 +08:00
INCLUDES
2025-06-02 16:28:16 +08:00
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui
)
install(EXPORT ftxui-targets
2025-04-11 21:07:58 +08:00
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
CXX_MODULES_DIRECTORY ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
2025-06-02 16:28:16 +08:00
)
install(FILES my_package-config.cmake
2025-04-11 21:07:58 +08:00
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
2025-06-02 16:28:16 +08:00
)
2025-04-10 20:45:45 +08:00
endif()