diff --git a/src/MaaCore/CMakeLists.txt b/src/MaaCore/CMakeLists.txt index 3f1140b80c..0558302c00 100644 --- a/src/MaaCore/CMakeLists.txt +++ b/src/MaaCore/CMakeLists.txt @@ -31,6 +31,46 @@ set_target_properties(MaaCore PROPERTIES PUBLIC_HEADER "${MaaCore_PUBLIC_HEADERS source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${maa_src}) +# 收集resource/tasks目录下的所有文件作为资源 +file(GLOB_RECURSE TASKS_RESOURCE_FILES + "${PROJECT_SOURCE_DIR}/resource/tasks/*" +) +file(GLOB_RECURSE GLOBAL_TASKS_RESOURCE_FILES + "${PROJECT_SOURCE_DIR}/resource/global/*/resource/tasks/*" +) + +# 将资源文件添加到MaaCore目标,但不参与编译 +target_sources(MaaCore PRIVATE ${TASKS_RESOURCE_FILES}) +target_sources(MaaCore PRIVATE ${GLOBAL_TASKS_RESOURCE_FILES}) + +# 使用source_group创建正确的文件夹结构 +source_group(TREE "${PROJECT_SOURCE_DIR}/resource/tasks" + PREFIX "Resource Files/tasks/CN" + FILES ${TASKS_RESOURCE_FILES} +) + +# 为GLOBAL_TASKS_RESOURCE_FILES创建特殊的文件夹结构 +foreach(GLOBAL_FILE ${GLOBAL_TASKS_RESOURCE_FILES}) + # 从完整路径中提取A部分:${PROJECT_SOURCE_DIR}/resource/global/A/resource/tasks/xxx + string(REGEX REPLACE "${PROJECT_SOURCE_DIR}/resource/global/([^/]+)/resource/tasks/.*" "\\1" FOLDER_NAME "${GLOBAL_FILE}") + + # 获取相对于resource/tasks的文件路径部分 + string(REGEX REPLACE "${PROJECT_SOURCE_DIR}/resource/global/[^/]+/resource/tasks/(.*)" "\\1" REL_FILE_PATH "${GLOBAL_FILE}") + + # 获取文件的目录部分 + get_filename_component(FILE_DIR "${REL_FILE_PATH}" DIRECTORY) + + # 构建VS中的显示路径 + if(FILE_DIR) + set(VS_GROUP "Resource Files/tasks/${FOLDER_NAME}/${FILE_DIR}") + else() + set(VS_GROUP "Resource Files/tasks/${FOLDER_NAME}") + endif() + + # 设置单个文件的source_group + source_group("${VS_GROUP}" FILES "${GLOBAL_FILE}") +endforeach() + if(WIN32) # 注意:相比VS版本缺少了 -D_CONSOLE -D_WINDLL 两项 target_compile_definitions(MaaCore PRIVATE ASST_DLL_EXPORTS _UNICODE UNICODE)