-- LearningSmartClient 主项目配置 -- 使用 xmake includes 模式组织子模块 -- 设置项目基本信息 set_project("LearningSmartClient") set_version("1.0.0") set_languages("c++17") -- 设置编译模式 add_rules("mode.debug", "mode.release") -- 全局编译选项 if is_plat("windows") then add_cxflags("/W3", "/utf-8") add_defines("_CRT_SECURE_NO_WARNINGS", "NOMINMAX", "WIN32_LEAN_AND_MEAN") add_defines("_SILENCE_CLANG_COROUTINE_MESSAGE") set_runtimes("MD") else add_cxflags("-Wall", "-Wextra") end -- FFmpeg 全局配置 local ffmpeg_path = os.getenv("FFMPEG_PATH") or "E:/AAA/ffmpeg-7.0.2-full_build-shared" local ffmpeg_include = ffmpeg_path .. "/include" local ffmpeg_lib = ffmpeg_path .. "/lib" -- 全局 FFmpeg 配置函数 function add_ffmpeg_config() if is_plat("windows") then add_includedirs(ffmpeg_include) add_linkdirs(ffmpeg_lib) add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter") end end -- 全局 Qt 配置函数(用于静态库) function add_qt_config() add_rules("qt.static") add_frameworks("QtCore", "QtGui", "QtWidgets", "QtNetwork", "QtWebSockets") add_frameworks("QtMultimedia", "QtWebSockets", "QtSvg", "QtXml") add_frameworks("QtOpenGL", "QtConcurrent") if is_plat("windows") then add_frameworks("QtWinExtras") end end -- 使用 includes 引入子模块配置 0 includes("libs") -- 应用程序模块 includes("api") includes("network") includes("views") includes("widgets") -- 主应用程序目标 target("LearningSmartClient") add_rules("qt.widgetapp") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end -- 设置输出目录 set_targetdir("$(projectdir)/bin") if is_mode("debug") then set_targetdir("$(projectdir)/bin_debug") set_basename("LearningSmartClientd") end -- 主程序源文件 add_files("main.cpp") add_files("mainwindow.cpp") add_files("MainPanel.cpp") add_files("appevent.cpp") add_files("thememanager.cpp") add_files("themesettingswidget.cpp") add_files("tlogger.cpp") -- 头文件 add_headerfiles("mainwindow.h") add_headerfiles("MainPanel.h") add_headerfiles("appevent.h") add_headerfiles("thememanager.h") add_headerfiles("themesettingswidget.h") add_headerfiles("tlogger.h") -- Qt MOC 处理 - 只处理主项目的头文件 add_files("mainwindow.h", {rules = "qt.moc"}) add_files("MainPanel.h", {rules = "qt.moc"}) add_files("appevent.h", {rules = "qt.moc"}) add_files("thememanager.h", {rules = "qt.moc"}) add_files("themesettingswidget.h", {rules = "qt.moc"}) add_files("tlogger.h", {rules = "qt.moc"}) -- 资源文件 add_files("resources/shared.qrc") -- 依赖的子模块 -- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils") -- 暂时不使用AV模块 add_deps("avrecorder_lib") add_deps("avplayer2_lib") add_deps("utils_lib") add_deps("api_lib") add_deps("network_lib") add_deps("views_lib") add_deps("widgets_lib") -- 第三方库依赖 add_deps("fmt", "qtpromise", "qwindowkit", "jsonserializer", "advanceddockingsystem") add_deps("qwindowkit_widgets") -- Qt 配置 add_qt_config() -- FFmpeg 配置 add_ffmpeg_config() -- Windows 特定链接库 if is_plat("windows") then add_syslinks("shell32", "user32", "gdi32", "ole32", "oleaut32") add_syslinks("winmm", "d3d11", "dwmapi", "windowsapp") add_syslinks("OpenGL32") end -- 包含目录 add_includedirs(".") add_includedirs("thardware") add_files("thardware/*.cpp") target_end() ---- ScreenWall 独立应用程序 --target("ScreenWall") -- add_rules("qt.widgetapp") -- set_kind("binary") -- -- 设置输出目录 -- set_targetdir("$(projectdir)/bin") -- if is_mode("debug") then -- set_targetdir("$(projectdir)/bin_debug") -- set_basename("ScreenWalld") -- end -- -- ScreenWall 源文件 -- add_files("ScreenWall/main.cpp") -- add_files("ScreenWall/screenwall_simple.cpp") -- add_files("ScreenWall/screenwall_widget.cpp") -- -- 头文件 -- add_headerfiles("ScreenWall/screenwall_simple.h") -- add_headerfiles("ScreenWall/screenwall_widget.h") -- -- Qt MOC 处理 -- add_files("ScreenWall/*.h", {rules = "qt.moc"}) -- -- 依赖模块 -- add_deps("avrecorder_lib") -- -- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils") -- 暂时不使用AV模块 -- -- Qt 配置 -- add_qt_config() -- -- FFmpeg 配置 -- add_ffmpeg_config() -- -- Windows 特定链接库 -- if is_plat("windows") then -- add_syslinks("shell32", "user32", "gdi32", "ole32", "oleaut32") -- add_syslinks("winmm", "d3d11", "dwmapi", "windowsapp") -- add_syslinks("OpenGL32") -- end --target_end()