Merge pull request #928 from yvt/chore-msvc-paks
Improve the asset building in MSVC - The pak building step now tracks its dependencies correctly. Consequently, it will not run if the input files are unchanged. - The build process now copies `PackageInfo.json` to the correct output directory.master
commit
7c27e5b25c
|
@ -120,7 +120,6 @@ GCC 4.9 / Clang 3.2 or later is recommended because OpenSpades relies on C++11 f
|
|||
* For OpenAL audio: `openal32.dll`
|
||||
* For YSR audio: `YSRSpades.dll`, `libgcc_s_dw2-1.dll`, `libstdc++-6.dll`, `pthreadGC2.dll`
|
||||
9. Download the [Non-free pak](https://github.com/yvt/openspades-paks/releases/download/r33/OpenSpadesDevPackage-r33.zip), extract it, and copy `Nonfree/pak000-Nonfree.pak` to the `Resources` folder inside your build output directory, which is probably `E:/Projects/openspades/openspades.msvc/bin/BUILD_TYPE/Resources`. You can also copy the paks contained in `Official Mods/` folder of OpenSpades 0.0.12b to add more fonts and improve localization support of your build.
|
||||
10. Copy `Resources/PackageInfo.json` to the `Resources` folder inside your build output directory.
|
||||
|
||||
### On macOS (with Ninja)
|
||||
1. Get the latest version of Xcode and the OpenSpades source code. Install the following prerequisites:
|
||||
|
|
|
@ -34,47 +34,81 @@ if(OPENSPADES_RESOURCES)
|
|||
endif()
|
||||
endif(OPENSPADES_NONFREE_RESOURCES)
|
||||
|
||||
# TODO: subgroups for script files
|
||||
file(GLOB_RECURSE GFX_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Gfx/*)
|
||||
file(GLOB_RECURSE LICENSE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/License/*)
|
||||
file(GLOB_RECURSE LOCALE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Locales/*)
|
||||
file(GLOB_RECURSE MAP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Maps/*.vxl)
|
||||
file(GLOB_RECURSE MODEL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Models/*)
|
||||
file(GLOB_RECURSE SCRIPT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Scripts/*.as)
|
||||
file(GLOB_RECURSE SHADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Shaders/*.fs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Shaders/*.program
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Shaders/*.vs)
|
||||
file(GLOB_RECURSE SOUND_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Sounds/*)
|
||||
file(GLOB_RECURSE TEXTURE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Textures/*)
|
||||
set(PAK_IN_FILES
|
||||
${GFX_FILES} ${LICENSE_FILES} ${LOCALE_FILES} ${MAP_FILES}
|
||||
${MODEL_FILES} ${SCRIPT_FILES} ${SHADER_FILES} ${SOUND_FILES}
|
||||
${TEXTURE_FILES})
|
||||
set(PACKAGE_INFO_IN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/PackageInfo.json)
|
||||
set(PACKAGE_INFO_OUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/PackageInfo.json)
|
||||
|
||||
source_group("Gfx" FILES ${GFX_FILES})
|
||||
source_group("License Texts" FILES ${LICENSE_FILES})
|
||||
source_group("Translations" FILES ${LOCALE_FILES})
|
||||
source_group("Maps" FILES ${MAP_FILES})
|
||||
source_group("Models" FILES ${MODEL_FILES})
|
||||
source_group("Scripts" FILES ${SCRIPT_FILES})
|
||||
source_group("Shaders" FILES ${SHADER_FILES})
|
||||
source_group("Sounds" FILES ${SOUND_FILES})
|
||||
source_group("Textures" FILES ${TEXTURE_FILES})
|
||||
|
||||
add_custom_target(OpenSpades_Resources ALL
|
||||
COMMENT "Packing assets"
|
||||
SOURCES ${SCRIPT_FILES} ${SHADER_FILES}
|
||||
DEPENDS ${COMPILED_PAK_FILES})
|
||||
COMMENT "Building assets"
|
||||
SOURCES ${PAK_IN_FILES} ${PACKAGE_INFO_IN_FILE}
|
||||
DEPENDS
|
||||
${PACKAGE_INFO_OUT_FILE}
|
||||
${COMPILED_PAK_FILES})
|
||||
|
||||
if(WIN32)
|
||||
if(MSVC)
|
||||
# multi-config
|
||||
add_custom_command(
|
||||
OUTPUT ${COMPILED_PAK_FILES}
|
||||
COMMAND powershell -ExecutionPolicy Bypass ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
||||
${CMAKE_BINARY_DIR}/bin/$<CONFIGURATION>/Resources
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
else()
|
||||
add_custom_command(
|
||||
OUTPUT ${COMPILED_PAK_FILES}
|
||||
COMMAND powershell -ExecutionPolicy Bypass ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
||||
${CMAKE_BINARY_DIR}/bin/Resources
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT ${COMPILED_PAK_FILES}
|
||||
COMMAND powershell -ExecutionPolicy Bypass
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Building paks"
|
||||
DEPENDS ${PAK_IN_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
elseif (UNIX)
|
||||
add_custom_command(
|
||||
OUTPUT ${COMPILED_PAK_FILES}
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.sh
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Building paks"
|
||||
DEPENDS ${PAK_IN_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.sh
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/PackageInfo.json
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_custom_command(
|
||||
OUTPUT ${PACKAGE_INFO_OUT_FILE}
|
||||
DEPENDS ${PACKAGE_INFO_IN_FILE}
|
||||
COMMENT "Copying PackageInfo.json"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${PACKAGE_INFO_IN_FILE} ${PACKAGE_INFO_OUT_FILE})
|
||||
|
||||
if (WIN32 AND MSVC)
|
||||
# copy the output files to the multi-config binary directory
|
||||
# (you can't use generator expressions (`$<...>`) in `add_custom_command`'s
|
||||
# `OUTPUT` parameter; it's not supported by CMake.)
|
||||
add_custom_command(
|
||||
TARGET OpenSpades_Resources POST_BUILD
|
||||
COMMENT "Copying assets to the currently-selected configuration's build directory"
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E make_directory
|
||||
${CMAKE_BINARY_DIR}/bin/$<CONFIGURATION>/Resources
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy_if_different
|
||||
${COMPILED_PAK_FILES} ${PACKAGE_INFO_OUT_FILE}
|
||||
${CMAKE_BINARY_DIR}/bin/$<CONFIGURATION>/Resources)
|
||||
endif (WIN32 AND MSVC)
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
|
|
Loading…
Reference in New Issue