cmake_minimum_required(VERSION 3.10)

project(lz-scan VERSION 1.6.6 LANGUAGES CXX)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 设置自动生成 moc 文件
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# 查找 Qt5 包
find_package(Qt5 COMPONENTS Core Gui Widgets PrintSupport Concurrent REQUIRED)

# 查找 SANE 库
find_library(SANE_LIBRARIES NAMES sane REQUIRED)
if(NOT SANE_LIBRARIES)
    message(FATAL_ERROR "SANE library not found")
endif()

# 包含目录
include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/src
    /usr/include
)

# 源文件
set(SOURCES
    src/main.cpp
    src/mainwindow.cpp
    src/scannercontroller.cpp
    src/imageprocessor.cpp
    src/documentmanager.cpp
    src/croppableimagewidget.cpp
    src/platform_detection.cpp
)

# 头文件
set(HEADERS
    src/mainwindow.h
    src/scannercontroller.h
    src/imageprocessor.h
    src/documentmanager.h
    src/croppableimagewidget.h
    src/platform_detection.h
)

# 资源文件
set(RESOURCES
    resources/resources.qrc
)

# 创建可执行文件
add_executable(lz-scan ${SOURCES} ${HEADERS} ${RESOURCES})

# 链接 Qt5 和 SANE 库
target_link_libraries(lz-scan
    Qt5::Core
    Qt5::Gui
    Qt5::Widgets
    Qt5::PrintSupport
    Qt5::Concurrent
    ${SANE_LIBRARIES}
)

# 安装规则
install(TARGETS lz-scan DESTINATION bin)

# 安装桌面文件
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/debian/lz-scan.desktop")
    install(FILES debian/lz-scan.desktop 
            DESTINATION share/applications)
endif()

# 安装图标
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lz-scan.svg")
    install(FILES lz-scan.svg 
            DESTINATION share/icons/hicolor/scalable/apps)
endif()

# 安装 man 手册
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/debian/lz-scan.1")
    install(FILES debian/lz-scan.1 
            DESTINATION share/man/man1)
endif()

# 创建翻译文件目录
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/translations)

# 添加测试
enable_testing()