-- QWindowKit 库
target("qwindowkit")
    set_kind("static")
    if is_plat("windows") then
        add_defines("UNICODE", "_UNICODE")
    end
    
    -- 源文件
    add_defines("QWK_CORE_STATIC","QWK_WIDGETS_STATIC", {public = true})
    -- 头文件
    add_includedirs("src/core")
    add_includedirs("src")

    add_files("src/core/contexts/abstractwindowcontext_p.h")
    add_files("src/core/contexts/cocoawindowcontext_p.h")
    add_files("src/core/contexts/qtwindowcontext_p.h")
    add_files("src/core/contexts/win32windowcontext_p.h")
    add_files("src/core/kernel/nativeeventfilter_p.h")
    add_files("src/core/kernel/sharedeventfilter_p.h")
    add_files("src/core/kernel/winidchangeeventfilter_p.h")
    -- # add_files("src/core/qwindowkit_linux.h")
    add_files("src/core/qwindowkit_windows.h")
    add_files("src/core/qwkglobal.h")
    add_files("src/core/qwkglobal_p.h")
    add_files("src/core/shared/qwkwindowsextra_p.h")
    add_files("src/core/shared/systemwindow_p.h")
    add_files("src/core/shared/windows10borderhandler_p.h")
    add_files("src/core/style/styleagent.h")
    add_files("src/core/style/styleagent_p.h")
    add_files("src/core/windowagentbase.h")
    add_files("src/core/windowagentbase_p.h")
    add_files("src/core/windowitemdelegate_p.h")
    add_files("src/widgets/qwkwidgetsglobal.h")
    add_files("src/widgets/widgetitemdelegate_p.h")
    add_files("src/widgets/widgetwindowagent.h")
    add_files("src/widgets/widgetwindowagent_p.h")

    add_files("src/core/contexts/abstractwindowcontext.cpp")
    --# add_files("src/core/contexts/cocoawindowcontext.mm")
    add_files("src/core/contexts/qtwindowcontext.cpp")
    add_files("src/core/contexts/win32windowcontext.cpp")
    add_files("src/core/kernel/nativeeventfilter.cpp")
    add_files("src/core/kernel/sharedeventfilter.cpp")
    add_files("src/core/kernel/winidchangeeventfilter.cpp")
    add_files("src/core/qwindowkit_windows.cpp")
    add_files("src/core/qwkglobal.cpp")
    add_files("src/core/style/styleagent.cpp")
    --# add_files("src/core/style/styleagent_linux.cpp")
    --# add_files("src/core/style/styleagent_mac.mm")
    add_files("src/core/style/styleagent_win.cpp")
    add_files("src/core/windowagentbase.cpp")
    add_files("src/core/windowitemdelegate.cpp")
    add_files("src/widgets/widgetitemdelegate.cpp")
    add_files("src/widgets/widgetwindowagent.cpp")
    --# add_files("src/widgets/widgetwindowagent_mac.cpp")
    add_files("src/widgets/widgetwindowagent_win.cpp")
    -- 包含目录
    add_includedirs("src", {public = true})
    
    -- Qt 配置
    add_rules("qt.static")
    
    -- Qt MOC 处理
--    add_files("src/**/*.h", {rules = "qt.moc"})
    
    -- C++17 标准
    set_languages("c++17")
    
    -- Windows 特定配置
    if is_plat("windows") then
        add_cxflags("/utf-8")
        add_syslinks("user32", "gdi32", "ole32", "oleaut32")
        add_syslinks("dwmapi", "uxtheme", "shell32")
    else
        add_cxflags("-Wall", "-Wextra")
    end
    add_frameworks("QtCore", "QtGui", "QtWidgets")
target_end()

target("qwindowkit_widgets")
    add_rules("qt.static")
    if is_plat("windows") then
        add_defines("UNICODE", "_UNICODE")
    end
  
    add_includedirs("examples/shared", {public = true})
    add_files("examples/shared/widgetframe/windowbar.h")
    add_files("examples/shared/widgetframe/windowbar_p.h")
    add_files("examples/shared/widgetframe/windowbutton.h")
    add_files("examples/shared/widgetframe/windowbutton_p.h")

    add_files("examples/shared/widgetframe/windowbar.cpp")
    add_files("examples/shared/widgetframe/windowbutton.cpp")

    add_frameworks("QtCore", "QtGui", "QtWidgets")
target_end()

