init
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(hcie-qt-app VERSION 0.1.0 LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_SOURCE_DIR}/ui)
|
||||
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets OpenGL OpenGLWidgets)
|
||||
|
||||
# ── Engine static library (built by Cargo) ──────────────────────────────────
|
||||
# The Rust engine produces a C-compatible static library at:
|
||||
# ../target/debug/libhcie_engine_api.a (Linux/macOS)
|
||||
# ../target/debug/hcie_engine_api.lib (Windows MSVC)
|
||||
# Build it first with: cargo build -p hcie-engine-api
|
||||
set(ENGINE_LIB_DIR "${CMAKE_SOURCE_DIR}/../target/debug")
|
||||
|
||||
if(WIN32)
|
||||
set(ENGINE_STATIC_LIB "${ENGINE_LIB_DIR}/hcie_engine_api.lib")
|
||||
set(ENGINE_DLL_DIR "${ENGINE_LIB_DIR}")
|
||||
else()
|
||||
set(ENGINE_STATIC_LIB "${ENGINE_LIB_DIR}/libhcie_engine_api.a")
|
||||
endif()
|
||||
|
||||
# ── Sources ─────────────────────────────────────────────────────────────────
|
||||
set(HCIE_QT_SOURCES
|
||||
src/main.cpp
|
||||
src/mainwindow.cpp
|
||||
src/canvas_widget.cpp
|
||||
src/hcie_engine_wrapper.cpp
|
||||
src/panels/tools_panel.cpp
|
||||
src/panels/layers_panel.cpp
|
||||
src/panels/colors_panel.cpp
|
||||
src/panels/brushes_panel.cpp
|
||||
src/panels/history_panel.cpp
|
||||
src/panels/properties_panel.cpp
|
||||
src/panels/filters_panel.cpp
|
||||
src/panels/ai_chat_panel.cpp
|
||||
src/panels/layer_styles_panel.cpp
|
||||
src/panels/layer_details_panel.cpp
|
||||
src/dialogs/new_image_dialog.cpp
|
||||
src/dialogs/filter_dialog.cpp
|
||||
src/dialogs/preferences_dialog.cpp
|
||||
)
|
||||
|
||||
set(HCIE_QT_HEADERS
|
||||
src/mainwindow.h
|
||||
src/canvas_widget.h
|
||||
src/hcie_engine_wrapper.h
|
||||
src/panels/tools_panel.h
|
||||
src/panels/layers_panel.h
|
||||
src/panels/colors_panel.h
|
||||
src/panels/brushes_panel.h
|
||||
src/panels/history_panel.h
|
||||
src/panels/properties_panel.h
|
||||
src/panels/filters_panel.h
|
||||
src/panels/ai_chat_panel.h
|
||||
src/panels/layer_styles_panel.h
|
||||
src/panels/layer_details_panel.h
|
||||
src/dialogs/new_image_dialog.h
|
||||
src/dialogs/filter_dialog.h
|
||||
src/dialogs/preferences_dialog.h
|
||||
)
|
||||
|
||||
set(HCIE_QT_UIS
|
||||
ui/mainwindow.ui
|
||||
ui/new_image_dialog.ui
|
||||
ui/filter_dialog.ui
|
||||
ui/preferences_dialog.ui
|
||||
# Panel UI files (Qt Designer editable)
|
||||
ui/layers_panel.ui
|
||||
ui/brushes_panel.ui
|
||||
ui/filters_panel.ui
|
||||
ui/history_panel.ui
|
||||
ui/properties_panel.ui
|
||||
)
|
||||
|
||||
set(HCIE_QT_RESOURCES
|
||||
resources/resources.qrc
|
||||
)
|
||||
|
||||
# ── Target ──────────────────────────────────────────────────────────────────
|
||||
add_executable(hcie-qt
|
||||
${HCIE_QT_SOURCES}
|
||||
${HCIE_QT_HEADERS}
|
||||
${HCIE_QT_UIS}
|
||||
${HCIE_QT_RESOURCES}
|
||||
)
|
||||
|
||||
target_include_directories(hcie-qt PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
${CMAKE_CURRENT_BINARY_DIR} # for AUTOUIC generated headers
|
||||
)
|
||||
|
||||
target_link_libraries(hcie-qt PRIVATE
|
||||
Qt6::Core
|
||||
Qt6::Gui
|
||||
Qt6::Widgets
|
||||
Qt6::OpenGL
|
||||
Qt6::OpenGLWidgets
|
||||
${ENGINE_STATIC_LIB}
|
||||
)
|
||||
|
||||
# ── Platform-specific link flags ────────────────────────────────────────────
|
||||
if(UNIX AND NOT APPLE)
|
||||
target_link_libraries(hcie-qt PRIVATE
|
||||
pthread dl m rt
|
||||
)
|
||||
# dav1d (AVIF codec) — may need explicit versioned .so link
|
||||
set(DAV1D_LIB_PATH "/usr/lib/x86_64-linux-gnu/libdav1d.so.7")
|
||||
if(EXISTS "${DAV1D_LIB_PATH}")
|
||||
target_link_libraries(hcie-qt PRIVATE ${DAV1D_LIB_PATH})
|
||||
else()
|
||||
target_link_libraries(hcie-qt PRIVATE dav1d)
|
||||
endif()
|
||||
target_link_options(hcie-qt PRIVATE -rdynamic)
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
target_link_libraries(hcie-qt PRIVATE
|
||||
pthread dl m
|
||||
"-framework OpenGL"
|
||||
"-framework CoreFoundation"
|
||||
"-framework Security"
|
||||
"-framework SystemConfiguration"
|
||||
"-framework CoreGraphics"
|
||||
"-framework CoreText"
|
||||
"-framework AppKit"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
target_link_libraries(hcie-qt PRIVATE
|
||||
ws2_32 userenv bcrypt ntdll advapi32
|
||||
opengl32
|
||||
)
|
||||
# Copy Qt DLLs to output directory (handled by windeployqt at install time)
|
||||
endif()
|
||||
|
||||
# ── Install ─────────────────────────────────────────────────────────────────
|
||||
install(TARGETS hcie-qt RUNTIME DESTINATION bin)
|
||||
Reference in New Issue
Block a user