Files
tla_visualiser/CMakeLists.txt
2025-12-27 02:56:19 +00:00

83 lines
1.6 KiB
CMake

cmake_minimum_required(VERSION 3.22)
project(tla_visualiser VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Qt6 setup
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
# Find required packages
find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick Widgets)
find_package(CURL REQUIRED)
# Include directories
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/include
${CURL_INCLUDE_DIRS}
)
# Source files
set(SOURCES
src/main.cpp
src/github_importer.cpp
src/tlc_runner.cpp
src/state_graph_model.cpp
src/trace_viewer_model.cpp
)
set(HEADERS
include/github_importer.h
include/tlc_runner.h
include/state_graph_model.h
include/trace_viewer_model.h
)
# QML files
set(QML_FILES
qml/main.qml
qml/ImportView.qml
qml/GraphView.qml
qml/TraceView.qml
qml/InvariantView.qml
)
# Add executable
add_executable(${PROJECT_NAME}
${SOURCES}
${HEADERS}
)
# Link libraries
target_link_libraries(${PROJECT_NAME}
Qt6::Core
Qt6::Gui
Qt6::Quick
Qt6::Widgets
${CURL_LIBRARIES}
)
# Set properties
set_target_properties(${PROJECT_NAME} PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
# Install targets
install(TARGETS ${PROJECT_NAME}
BUNDLE DESTINATION .
RUNTIME DESTINATION bin
)
# Copy QML files to build directory
foreach(QML_FILE ${QML_FILES})
configure_file(${QML_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${QML_FILE} COPYONLY)
endforeach()
# Enable testing
enable_testing()
add_subdirectory(tests)