| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- cmake_minimum_required(VERSION 3.20)
- project(lumacs VERSION 0.1.0 LANGUAGES CXX)
- # C++20 standard
- set(CMAKE_CXX_STANDARD 20)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_CXX_EXTENSIONS OFF)
- # Export compile commands for clangd/LSP
- set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
- # Build type
- if(NOT CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE Release)
- endif()
- # Compiler warnings
- if(MSVC)
- add_compile_options(/W4 /WX)
- else()
- add_compile_options(-Wall -Wextra -Wpedantic -Werror)
- endif()
- # Dependencies
- include(FetchContent)
- # ncurses for TUI (better control key support)
- find_package(Curses REQUIRED)
- # Optional: Keep FTXUI for comparison (commented out for now)
- # FetchContent_Declare(
- # ftxui
- # GIT_REPOSITORY https://github.com/ArthurSonzogni/FTXUI.git
- # GIT_TAG v5.0.0
- # )
- # set(FTXUI_BUILD_DOCS OFF CACHE BOOL "" FORCE)
- # set(FTXUI_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
- # set(FTXUI_ENABLE_INSTALL OFF CACHE BOOL "" FORCE)
- # FetchContent_MakeAvailable(ftxui)
- # Lua and sol2
- find_package(Lua 5.4 REQUIRED)
- # sol2 - use develop branch for latest compatibility fixes
- FetchContent_Declare(
- sol2
- GIT_REPOSITORY https://github.com/ThePhD/sol2.git
- GIT_TAG develop
- GIT_SHALLOW TRUE
- )
- FetchContent_MakeAvailable(sol2)
- # Core library (UI-independent)
- add_library(lumacs_core STATIC
- src/buffer.cpp
- src/window.cpp
- src/editor_core.cpp
- src/lua_api.cpp
- )
- target_include_directories(lumacs_core PUBLIC
- ${CMAKE_CURRENT_SOURCE_DIR}/include
- ${LUA_INCLUDE_DIR}
- )
- target_link_libraries(lumacs_core PUBLIC
- sol2::sol2
- ${LUA_LIBRARIES}
- )
- # TUI executable (ncurses-based)
- add_executable(lumacs
- src/main_ncurses.cpp
- )
- target_link_libraries(lumacs PRIVATE
- lumacs_core
- ${CURSES_LIBRARIES}
- )
- target_include_directories(lumacs PRIVATE
- ${CURSES_INCLUDE_DIR}
- )
- # Keep old FTXUI version for comparison (temporarily disabled)
- # add_executable(lumacs_ftxui
- # src/main.cpp
- # )
- # target_link_libraries(lumacs_ftxui PRIVATE
- # lumacs_core
- # ftxui::screen
- # ftxui::dom
- # ftxui::component
- # )
- # Enable testing
- enable_testing()
- add_subdirectory(tests EXCLUDE_FROM_ALL)
|