cmake_minimum_required(VERSION 3.16)

# 显式允许旧版 FindBoost 模块正常运行而不在新版 CMake 下弹警告 (CMP0167)
if(POLICY CMP0167)
    cmake_policy(SET CMP0167 OLD)
endif()

project(deepin-anything-gui-qt)

# 核心对齐一：深度官方底层使用了 C++20 标准（对分词器内一些高级特性很重要）
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 开启 Qt 专属的元对象编译器
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

# 1. 寻找 Qt 依赖 (优先 Qt6，其次 Qt5)
find_package(QT NAMES Qt6 Qt5 CONFIG REQUIRED COMPONENTS Widgets Core)
find_package(Qt${QT_VERSION_MAJOR} CONFIG REQUIRED Widgets Core)
message(STATUS "Using Qt Version: ${QT_VERSION_MAJOR}")

# 2. 寻找其他原生底层包
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLIB REQUIRED glib-2.0)

# 核心对齐二：同步官方使用 PkgConfig 引入 lucene 基础库和 contrib 扩展库
pkg_check_modules(LUCENE REQUIRED liblucene++)
pkg_check_modules(LUCENE_CONTRIB REQUIRED liblucene++-contrib)

find_package(Threads REQUIRED)
find_package(Boost REQUIRED COMPONENTS system)

# 3. 生成目标二进制
add_executable(deepin-anything-gui-qt
    main.cpp
    mainwindow.cpp
    searchworker.cpp
    searcher.cpp
)

# 4. 头文件包含
target_include_directories(deepin-anything-gui-qt PRIVATE
    ${GLIB_INCLUDE_DIRS}
    ${LUCENE_INCLUDE_DIRS}
    ${LUCENE_CONTRIB_INCLUDE_DIRS} # <-- 这样会自动把 /usr/include/lucene++/contrib 加进来，彻底告别找不到头文件
    ${CMAKE_CURRENT_SOURCE_DIR}/../daemon/include
)

# 5. 链接所有依赖库
target_link_libraries(deepin-anything-gui-qt
    Qt${QT_VERSION_MAJOR}::Widgets
    Qt${QT_VERSION_MAJOR}::Core
    ${GLIB_LIBRARIES}
    ${LUCENE_LIBRARIES}
    ${LUCENE_CONTRIB_LIBRARIES}     # <-- 补充链接扩展库
    Threads::Threads
    ${Boost_LIBRARIES}
    stdc++fs
)

target_link_options(deepin-anything-gui-qt PRIVATE -pie)