重构SpriteAssertTool.cpp,减少中间文件产生;重构TomGame文件夹,删去不必要的文件;修改CMakeLists,PC重构Game自动重新构建资源头文件;修改文档
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user