CMake: Move copying of models to build-time.

This commit is contained in:
Donny Lawrence 2019-06-05 11:50:45 -05:00 committed by Sam Edwards
parent aed55d4e7e
commit f0c9772396
2 changed files with 47 additions and 9 deletions

View File

@ -64,21 +64,32 @@ if(BUILD_CONTRIB)
endif()
if(BUILD_MODELS)
# We don't really "build" the models, just pzip them
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/models/maps/"
DESTINATION "${PROJECT_BINARY_DIR}/models/maps")
run_pzip(models
"${CMAKE_CURRENT_SOURCE_DIR}/models/"
"${PROJECT_BINARY_DIR}/models"
"${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/models"
*.egg)
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/dmodels/src/"
DESTINATION "${PROJECT_BINARY_DIR}/models"
FILES_MATCHING PATTERN *.rgb PATTERN *.png PATTERN *.jpg PATTERN *.wav)
run_pzip(dmodels
"${CMAKE_CURRENT_SOURCE_DIR}/dmodels/src/"
"${PROJECT_BINARY_DIR}/models"
"${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/models"
*.egg)
install(DIRECTORY "${PROJECT_BINARY_DIR}/models"
add_custom_command(TARGET models
POST_BUILD
COMMAND ${CMAKE_COMMAND}
-DSOURCE="${CMAKE_CURRENT_SOURCE_DIR}/models/maps/"
-DDESTINATION="${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/models/maps"
-P ${PROJECT_SOURCE_DIR}/cmake/scripts/CopyPattern.cmake
COMMENT "Copying models/maps")
add_custom_command(TARGET dmodels
POST_BUILD
COMMAND ${CMAKE_COMMAND}
-DSOURCE="${CMAKE_CURRENT_SOURCE_DIR}/dmodels/src/"
-DDESTINATION="${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/models"
-DFILES_MATCHING="PATTERN;*.rgb;PATTERN;*.png;PATTERN;*.jpg;PATTERN;*.wav"
-P ${PROJECT_SOURCE_DIR}/cmake/scripts/CopyPattern.cmake
COMMENT "Copying dmodels' assets")
install(DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/models"
COMPONENT Models DESTINATION share/panda3d)
endif()

View File

@ -0,0 +1,27 @@
# Filename: CopyPattern.cmake
#
# Description: This is a standalone version of CMake's file(COPY) command so we
# can use all of its features during build-time instead of
# config-time.
#
# Usage:
# This script is invoked via add_custom_target, like this:
# cmake -D SOURCE=[source directory]
# -D DESTINATION=[destination directory]
# -D FILES_MATCHING="[globbing patterns passed to file(COPY)]"
# -P CopyPattern.cmake
if(NOT DEFINED SOURCE OR NOT DEFINED DESTINATION)
message(SEND_ERROR "CopyPattern.cmake requires SOURCE and DESTINATION to be
defined.")
endif()
if(DEFINED FILES_MATCHING)
separate_arguments(FILES_MATCHING UNIX_COMMAND ${FILES_MATCHING})
file(COPY "${SOURCE}"
DESTINATION "${DESTINATION}"
FILES_MATCHING ${FILES_MATCHING})
else()
file(COPY "${SOURCE}"
DESTINATION "${DESTINATION}")
endif()