Init commit

This commit is contained in:
2026-08-17 06:31:43 +09:00
commit 348d9275f6
428 changed files with 61806 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
# 请将此文件加入.gitignore
# 在此文件配置对应的库的路径
##### 填写一些库的地址,如果填错了将关闭相关模块 #####
#1. VCPKG库的根目录
set(PATH_VCPKG "")
#2. OpenSSL库的根目录
set(PATH_SSL "")
#3. ZLIB库的根目录
set(PATH_ZLIB "")
#4. libcurl库的根目录
set(PATH_CURL "")
#5. opencv库的根目录
set(PATH_OPENCV "")
#6. QT库目录,如 C:/Qt/6.8.1/msvc2022_64
set(PATH_QT "")
+66
View File
@@ -0,0 +1,66 @@
# # # # 使用方法: 在某个target编译完后用costom_command来调用此脚本
#
# add_custom_command(
# TARGET ${TG_APP}
# POST_BUILD
#
# COMMAND "${CMAKE_COMMAND}"
# "-DSRC_DIR=${PROJECT_SOURCE_DIR}/assets"
# "-DDST_DIR=$<TARGET_FILE_DIR:${TG_APP}>/assets"
# -P "${PROJECT_SOURCE_DIR}/cmake/copy_assets_to_output.cmake"
#
# COMMENT "Copying assets..."
# VERBATIM
# )
#
# # # # 若希望把 assets 内部的内容直接复制到 exe 目录,不保留最外层 assets,命令改成
#
# "-DDST_DIR=$<TARGET_FILE_DIR:${TG_APP}>"
#
# # # #
if(NOT DEFINED SRC_DIR)
message(FATAL_ERROR "SRC_DIR is not defined")
endif()
if(NOT DEFINED DST_DIR)
message(FATAL_ERROR "DST_DIR is not defined")
endif()
if(NOT EXISTS "${SRC_DIR}")
message(FATAL_ERROR "Source directory does not exist: ${SRC_DIR}")
endif()
# 创建目标根目录
file(MAKE_DIRECTORY "${DST_DIR}")
# 获取所有文件和目录。
# RELATIVE 确保获得相对于 assets 的路径,以便保留目录结构。
file(
GLOB_RECURSE entries
LIST_DIRECTORIES true
RELATIVE "${SRC_DIR}"
"${SRC_DIR}/*"
)
foreach(relative_path IN LISTS entries)
set(source_path "${SRC_DIR}/${relative_path}")
set(target_path "${DST_DIR}/${relative_path}")
if(IS_DIRECTORY "${source_path}")
# 保留目录,包括空目录
file(MAKE_DIRECTORY "${target_path}")
else()
# 确保文件的父目录存在
get_filename_component(target_parent "${target_path}" DIRECTORY)
file(MAKE_DIRECTORY "${target_parent}")
# 内容相同时不覆盖
file(
COPY_FILE
"${source_path}"
"${target_path}"
ONLY_IF_DIFFERENT
)
endif()
endforeach()
+66
View File
@@ -0,0 +1,66 @@
# cmake/copy_deps_to_exe_dir.cmake
# 用法:
# cmake -DINPUT="C:/path/to/bin/curl.exe" `
# -DDIRS="C:/alib/curl/bin;C:/alib/xxx/bin"
# -P copy_deps_to_exe_dir.cmake `
#
# INPUT
# 需要拷贝依赖的target的路径(不一定是生成物,可以是libcurl.dll等中间物)
# DIRS
# 该target所依赖项存放的目录,因为是命令行,所以无法传列表,请JOIN列表为单一字符串
# 路径之间由__CMAKE_LIST_SEP__作为分隔符进行分割
#
#
message("${Y}==== 进入copy_deps_to_exe_dir.cmake ====${E}")
if (NOT DEFINED INPUT OR NOT EXISTS "${INPUT}")
message(FATAL_ERROR "INPUT not set or not exists: ${INPUT}")
endif ()
if (NOT DEFINED DIRS)
message(FATAL_ERROR "DIRS not set: ${DIRS}")
endif ()
message("INPUT=${INPUT}")
cmake_path(GET INPUT PARENT_PATH DESTDIR)
message("DESTDIR=${DESTDIR}")
string(REPLACE "__CMAKE_LIST_SEP__" ";" DIR_PIPE ${DIRS})
message("DIRS=${DIR_PIPE}") #这是依赖项们所在的目录
# 解析运行时依赖
file(GET_RUNTIME_DEPENDENCIES
EXECUTABLES "${INPUT}"
DIRECTORIES ${DIR_PIPE}
RESOLVED_DEPENDENCIES_VAR _resolved
UNRESOLVED_DEPENDENCIES_VAR _unresolved
# 过滤掉系统 DLL(按需增减)
PRE_EXCLUDE_REGEXES
"api-ms-win-.*"
"ext-ms-.*"
POST_EXCLUDE_REGEXES
".*[\\\\/]System32[\\\\/].*"
".*[\\\\/]Windows[\\\\/].*"
)
if (_unresolved)
message(WARNING "Unresolved deps:")
foreach (d IN LISTS _unresolved)
message(WARNING " ${d}")
endforeach ()
endif ()
# 复制解析到的 DLL
foreach (dll IN LISTS _resolved)
get_filename_component(dll_name "${dll}" NAME)
set(dst_file "${DESTDIR}/${dll_name}")
if (EXISTS "${dst_file}")
message(STATUS "Skip existing: ${dst_file}")
else ()
message(STATUS "Copy: ${dll} \n --> ${DESTDIR}")
file(COPY "${dll}" DESTINATION "${DESTDIR}")
endif ()
endforeach ()
+33
View File
@@ -0,0 +1,33 @@
message("${Y}==== 进入find_curl.cmake ====${E}")
set(USE_CURL OFF)
if (DEFINED PATH_CURL AND NOT "${PATH_CURL}" STREQUAL "")
file(TO_CMAKE_PATH ${PATH_CURL} PATH_CURL)
if (EXISTS ${PATH_CURL})
message("找到CURL库根目录")
# 寻找OPENSSL
if (NOT ${USE_SSL})
message(FATAL_ERROR "未成功配置OpenSSL,无法启用本CURL库")
endif ()
# 寻找zlib
if (NOT ${USE_ZLIB})
message(FATAL_ERROR "未成功配置ZLIB,无法启用本CURL库")
endif ()
# 寻找libpsl
# 寻找libidn2
# 寻找nghttp2
set(CURL_DIR ${PATH_CURL}/lib/cmake/CURL)
find_package(CURL CONFIG REQUIRED)
list(APPEND CMAKE_PREFIX_PATH ${PATH_CURL})
message("添加CURL库成功,将启用CURL")
set(USE_CURL ON)
else ()
message("curl库目录配置错误,不启用curl")
endif ()
else ()
message("未配置curl根目录,不启用curl")
endif ()
+20
View File
@@ -0,0 +1,20 @@
message("${Y}==== 进入find_opencv.cmake ====${E}")
set(USE_OPENCV OFF)
if (DEFINED PATH_OPENCV AND NOT "${PATH_OPENCV}" STREQUAL "")
file(TO_CMAKE_PATH ${PATH_OPENCV} PATH_OPENCV)
set(PATH_OPENCV ${PATH_OPENCV}/${CMAKE_BUILD_TYPE})
if(EXISTS ${PATH_OPENCV})
list(APPEND CMAKE_PREFIX_PATH ${PATH_OPENCV}/x64/vc17)
set(OpenCV_DIR ${PATH_OPENCV}/x64/vc17/lib)
find_package(OpenCV CONFIG REQUIRED)
message("找到opencv,将启用opencv库")
set(USE_OPENCV ON)
else ()
message("opencv根目录不正确,不启用opencv")
endif ()
else ()
message("未配置opencv根目录,不启用oepncv")
endif ()
+18
View File
@@ -0,0 +1,18 @@
message("${Y}==== 进入find_openssl.cmake ====${E}")
set(USE_OPENSSL OFF)
if (DEFINED PATH_SSL AND NOT "${PATH_SSL}" STREQUAL "")
file(TO_CMAKE_PATH ${PATH_SSL} PATH_SSL)
if(EXISTS ${PATH_SSL})
list(APPEND CMAKE_PREFIX_PATH ${PATH_SSL})
find_package(OpenSSL CONFIG REQUIRED)
message("找到OpenSSL,将启用OpenSSL库")
set(USE_OPENSSL ON)
else ()
message("OPENSSL根目录不正确,不启用OPENSSL")
endif ()
else ()
message("未配置OPENSSL根目录,不启用OPENSSL")
endif ()
+21
View File
@@ -0,0 +1,21 @@
message("${Y}==== 进入find_qt.cmake ====${E}")
set(USE_QT OFF)
if (DEFINED PATH_QT AND NOT ${PATH_QT} STREQUAL "")
if (EXISTS ${PATH_QT})
list(APPEND CMAKE_PREFIX_PATH ${PATH_QT})
find_package(Qt6 COMPONENTS
Core
Gui
Widgets
REQUIRED
)
qt_standard_project_setup()
message("成功配置QT,将启用QT")
else ()
message("QT目录配置错误,将不启用QT")
endif ()
else ()
message("未配置QT目录,将不启用QT")
endif ()
+18
View File
@@ -0,0 +1,18 @@
message("${Y}==== 进入find_vcpkg.cmake ====${E}")
set(USE_VCPKG OFF)
if (DEFINED PATH_VCPKG AND NOT "${PATH_VCPKG}" STREQUAL "")
file(TO_CMAKE_PATH ${PATH_VCPKG} PATH_VCPKG)
set(_VCMAKE_PATH ${PATH_VCPKG}/scripts/buildsystems/vcpkg.cmake)
if (EXISTS ${_VCMAKE_PATH})
message("找到VCPKG,将启用VCPKG")
list(APPEND CMAKE_TOOLCHAIN_FILE ${_VCMAKE_PATH})
list(APPEND CMAKE_PREFIX_PATH "${PATH_VCPKG}/installed/x64-windows")
set(USE_VCPKG ON)
else ()
message("VCPKG的路径错误,将不启用VCPKG")
endif ()
else ()
message("未设置PATH_VCPKG,将不启用VCPKG")
endif ()
+20
View File
@@ -0,0 +1,20 @@
message("${Y}==== 进入find_zlib.cmake ====${E}")
set(USE_ZLIB OFF)
if (DEFINED PATH_ZLIB AND NOT "${PATH_ZLIB}" STREQUAL "")
file(TO_CMAKE_PATH ${PATH_ZLIB} PATH_ZLIB)
if (EXISTS ${PATH_ZLIB})
set(ZLIB_ROOT ${PATH_ZLIB})
find_package(ZLIB CONFIG REQUIRED)
list(APPEND CMAKE_PREFIX_PATH ${PATH_ZLIB})
message("找到zlib库根目录,将启用ZLIB")
set(USE_ZLIB ON)
else ()
message("zlib库目录配置错误,不启用zlib")
endif ()
else ()
message("未配置zlib根目录,不启用zlib")
endif ()