/
BuildHelpers.CMakeLists.txt
51 lines (46 loc) · 2.08 KB
/
BuildHelpers.CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Copies files for the given game into the target res directory
# GAME_NAME name of the game
# REL_DIR to which directory these files are relative
# SRC_FILES which files from the REL_DIR to copy (GLOB)
macro(COPY_RES_FILES GAME_NAME GAME_RES_TARGET REL_DIR SRC_FILES)
file( GLOB_RECURSE RES_FILES RELATIVE ${REL_DIR} ${SRC_FILES} )
set(ALL_FILES)
foreach(SRC_FILE ${RES_FILES})
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${SRC_FILE}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${REL_DIR}/${SRC_FILE}"
"${CMAKE_CURRENT_BINARY_DIR}/${SRC_FILE}"
COMMENT "Copy ${SRC_FILE}"
)
list(APPEND ALL_FILES "${CMAKE_CURRENT_BINARY_DIR}/${SRC_FILE}" )
endforeach()
# create target for copying these files
add_custom_target( ${GAME_RES_TARGET} DEPENDS ${ALL_FILES} )
endmacro()
# convenience to call above with current directory and everything in "res"
macro(COPY_RES GAME_NAME)
# a target for all addition asserts (will be done in default compile, but if you target the executable
# it won't be done -- good for testing)
add_custom_target( ${GAME_NAME}_ASSETS ALL )
# copy entire "res" directory and "game.config" if there is one
set(CRG_PATTERN "res/*" "game.config")
COPY_RES_FILES( ${GAME_NAME} ${GAME_NAME}_CORE_RES
${CMAKE_CURRENT_SOURCE_DIR}
"${CRG_PATTERN}"
)
add_dependencies( ${GAME_NAME}_ASSETS ${GAME_NAME}_CORE_RES )
endmacro()
# Copies resources from an additional directory
# GAME_NAME name of the game
# REL_DIR from which directory
# ARGN which patterns to copy (should include res/ in name if to be placed in the res/ output)
macro(COPY_RES_EXTRA GAME_NAME REL_DIR)
# convert src's to full paths (based on rel_dir)
set(SRC_FILES)
foreach(SRC_FILE ${ARGN} )
list(APPEND SRC_FILES "${REL_DIR}/${SRC_FILE}")
endforeach()
COPY_RES_FILES( ${GAME_NAME} ${GAME_NAME}_EXTRA_RES ${REL_DIR} "${SRC_FILES}" )
add_dependencies( ${GAME_NAME}_ASSETS ${GAME_NAME}_EXTRA_RES )
endmacro()