mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2025-06-23 23:41:13 +08:00

Add experimental C++20 module suppport. Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
83 lines
2.2 KiB
CMake
83 lines
2.2 KiB
CMake
if (NOT FTXUI_BUILD_MODULES)
|
|
return()
|
|
endif()
|
|
|
|
add_library(ftxui-modules)
|
|
|
|
target_sources(ftxui-modules
|
|
PUBLIC FILE_SET CXX_MODULES FILES
|
|
src/ftxui/component.cppm
|
|
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
|
|
src/ftxui/dom.cppm
|
|
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
|
|
src/ftxui/screen.cppm
|
|
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
|
|
src/ftxui/util.cppm
|
|
src/ftxui/util/autoreset.cppm
|
|
src/ftxui/util/ref.cppm
|
|
)
|
|
|
|
target_link_libraries(ftxui-modules
|
|
PUBLIC
|
|
ftxui::screen
|
|
ftxui::dom
|
|
ftxui::component
|
|
)
|
|
|
|
target_compile_features(ftxui-modules PUBLIC cxx_std_20)
|
|
# TODO: Explain why this is needed.
|
|
if (CMAKE_COMPILER_IS_GNUCXX)
|
|
target_compile_options(ftxui-modules PUBLIC -fmodules-ts)
|
|
endif ()
|
|
|
|
add_library(ftxui::modules ALIAS ftxui-modules)
|
|
|
|
if(FTXUI_ENABLE_INSTALL)
|
|
|
|
include(GNUInstallDirs)
|
|
|
|
install(TARGETS ftxui-modules
|
|
EXPORT ftxui-targets
|
|
FILE_SET CXX_MODULES
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui
|
|
FILE_SET HEADERS
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui
|
|
INCLUDES
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui
|
|
)
|
|
install(EXPORT ftxui-targets
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
|
|
CXX_MODULES_DIRECTORY ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
|
|
)
|
|
install(FILES my_package-config.cmake
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
|
|
)
|
|
endif()
|