重构SpriteAssertTool.cpp,减少中间文件产生;重构TomGame文件夹,删去不必要的文件;修改CMakeLists,PC重构Game自动重新构建资源头文件;修改文档

This commit is contained in:
HP
2026-06-08 10:27:31 +08:00
parent 08088c8413
commit 1e34e15e04
26 changed files with 139256 additions and 82274 deletions
+41 -52
View File
@@ -1,8 +1,10 @@
set(TOM_GAME_TARGET IMX6U-Game)
set(TOM_ATLAS_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/generated/tom_atlas.h")
set_source_files_properties(${TOM_ATLAS_HEADER} PROPERTIES GENERATED TRUE)
add_executable(${TOM_GAME_TARGET}
Main.cpp
generated/tom_atlas.h
${TOM_ATLAS_HEADER}
)
target_include_directories(${TOM_GAME_TARGET} PRIVATE
@@ -11,91 +13,78 @@ target_include_directories(${TOM_GAME_TARGET} PRIVATE
imx6u_configure_app_target(${TOM_GAME_TARGET})
if(CMAKE_CROSSCOMPILING AND NOT EXISTS "${TOM_ATLAS_HEADER}")
message(FATAL_ERROR
"Tom atlas header is missing. Run GenerateTomAtlasHeader in a host build before cross compiling."
)
endif()
if(NOT USE_FRAMEBUFFER)
set(SPRITE_ASSET_TOOL_SOURCES
set(TOM_ATLAS_TOOL_SOURCES
tools/asset_pipeline/SpriteAssetTool.cpp
${PROJECT_SOURCE_DIR}/src/Core/Asset/SpriteAssetLoader.cpp
)
if(WIN32)
add_executable(TomSpriteAssetTool EXCLUDE_FROM_ALL ${SPRITE_ASSET_TOOL_SOURCES})
set_target_properties(TomSpriteAssetTool PROPERTIES OUTPUT_NAME SpriteAssetTool)
target_include_directories(TomSpriteAssetTool PRIVATE
${PROJECT_SOURCE_DIR}/src/Core/Asset
${PROJECT_SOURCE_DIR}/src/Core/RenderData
add_executable(TomAtlasTool EXCLUDE_FROM_ALL ${TOM_ATLAS_TOOL_SOURCES})
target_include_directories(TomAtlasTool PRIVATE
${PROJECT_SOURCE_DIR}/libs/Win/SDL2/include
${PROJECT_SOURCE_DIR}/libs/Win/SDL_image/include
)
target_link_directories(TomSpriteAssetTool PRIVATE
target_link_directories(TomAtlasTool PRIVATE
${SDL2_LIB_DIR}
${SDL2_IMAGE_LIB_DIR}
)
target_link_libraries(TomSpriteAssetTool PRIVATE SDL2main SDL2 SDL2_image)
target_link_libraries(TomAtlasTool PRIVATE SDL2main SDL2 SDL2_image)
add_custom_command(TARGET TomSpriteAssetTool POST_BUILD
add_custom_command(TARGET TomAtlasTool POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${SDL2_DLL}"
"$<TARGET_FILE_DIR:TomSpriteAssetTool>"
"$<TARGET_FILE_DIR:TomAtlasTool>"
)
add_custom_command(TARGET TomSpriteAssetTool POST_BUILD
add_custom_command(TARGET TomAtlasTool POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${SDL2_IMAGE_DLL}"
"$<TARGET_FILE_DIR:TomSpriteAssetTool>"
"$<TARGET_FILE_DIR:TomAtlasTool>"
)
elseif(SDL2_image_FOUND)
add_executable(TomSpriteAssetTool EXCLUDE_FROM_ALL ${SPRITE_ASSET_TOOL_SOURCES})
set_target_properties(TomSpriteAssetTool PROPERTIES OUTPUT_NAME SpriteAssetTool)
target_include_directories(TomSpriteAssetTool PRIVATE
${PROJECT_SOURCE_DIR}/src/Core/Asset
${PROJECT_SOURCE_DIR}/src/Core/RenderData
add_executable(TomAtlasTool EXCLUDE_FROM_ALL ${TOM_ATLAS_TOOL_SOURCES})
target_include_directories(TomAtlasTool PRIVATE
${SDL2_image_INCLUDE_DIRS}
${SDL2_IMAGE_INCLUDE_DIRS}
)
target_link_libraries(TomSpriteAssetTool PRIVATE SDL2::SDL2)
target_link_libraries(TomAtlasTool PRIVATE SDL2::SDL2)
if(TARGET SDL2_image::SDL2_image)
target_link_libraries(TomSpriteAssetTool PRIVATE SDL2_image::SDL2_image)
target_link_libraries(TomAtlasTool PRIVATE SDL2_image::SDL2_image)
else()
target_link_libraries(TomSpriteAssetTool PRIVATE
target_link_libraries(TomAtlasTool PRIVATE
${SDL2_image_LIBRARIES}
${SDL2_IMAGE_LIBRARIES}
)
endif()
else()
message(STATUS "SpriteAssetTool disabled: SDL2_image was not found")
message(STATUS "TomAtlasTool disabled: SDL2_image was not found")
endif()
if(TARGET TomSpriteAssetTool)
add_custom_target(ConvertTomSprites
COMMAND $<TARGET_FILE:TomSpriteAssetTool>
--batch
"src/Apps/Game/assets/raw"
"src/Apps/Game/assets/sprites"
--preset tom-800x480
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
DEPENDS TomSpriteAssetTool
COMMENT "Converting Tom PNG assets to board-ready .sprite files"
VERBATIM
)
add_custom_target(GenerateTomAtlasHeader
COMMAND $<TARGET_FILE:TomSpriteAssetTool>
--atlas-header
"src/Apps/Game/assets/raw"
"src/Apps/Game/generated/tom_atlas.h"
tom_atlas
--atlas-width
1024
--preset
tom-800x480
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
DEPENDS TomSpriteAssetTool
COMMENT "Generating Tom atlas header from PNG assets"
VERBATIM
)
if(TARGET TomAtlasTool)
if(NOT CMAKE_CROSSCOMPILING)
add_custom_target(GenerateTomAtlasHeader
COMMAND ${CMAKE_COMMAND} -E make_directory
"src/Apps/Game/generated"
COMMAND $<TARGET_FILE:TomAtlasTool>
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
DEPENDS TomAtlasTool
COMMENT "Generating Tom atlas header from PNG assets"
VERBATIM
)
add_dependencies(${TOM_GAME_TARGET} GenerateTomAtlasHeader)
else()
add_custom_target(GenerateTomAtlasHeader
COMMAND ${CMAKE_COMMAND} -E echo
"GenerateTomAtlasHeader is host-only. Run it in build-win or build-linux before cross compiling."
VERBATIM
)
endif()
endif()
endif()