-
Notifications
You must be signed in to change notification settings - Fork 4
/
acmake_copy_dependencies.cmake
65 lines (62 loc) · 2.7 KB
/
acmake_copy_dependencies.cmake
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
if(ACMAKE_COPY_DEPENDENCIES_INCLUDED)
return()
endif()
set(ACMAKE_COPY_DEPENDENCIES_INCLUDED TRUE)
include(acmake_parse_arguments)
set(ACMAKE_FIXUP_PATH ${CMAKE_CURRENT_LIST_DIR}/acmake_fixup.cmake.in)
set(ACMAKE_FIXUP_INSTALL_PATH ${CMAKE_CURRENT_LIST_DIR}/acmake_fixup_install.cmake.in)
set(ACMAKE_MAKE_FIXUP_INSTALL_PATH ${CMAKE_CURRENT_LIST_DIR}/acmake_make_fixup_install.cmake.in)
set(ACMAKE_FIXUP_COMMON_PATH ${CMAKE_CURRENT_LIST_DIR}/acmake_fixup_common.cmake)
macro(acmake_copy_dependencies TARGET)
acmake_parse_arguments(
ACMAKE_COPY_DEPENDENCIES
"INSTALL_DIR;CONFIGURATIONS;SUFFIX"
"INSTALL"
${ARGN}
)
acmake_get_target_property(RUNTIME_DIRS ${TARGET} ACMAKE_RUNTIME_DIRS)
acmake_get_target_property(RUNTIME ${TARGET} ACMAKE_RUNTIME)
foreach(CONFIG Debug Release)
string(TOUPPER ${CONFIG} _CONFIG_UPPER)
acmake_get_target_property(RUNTIME_${_CONFIG_UPPER} ${TARGET} ACMAKE_RUNTIME_${_CONFIG_UPPER})
endforeach()
configure_file(
${ACMAKE_FIXUP_PATH}
${CMAKE_CURRENT_BINARY_DIR}/acmake_fixup${ACMAKE_COPY_DEPENDENCIES_SUFFIX}.cmake
@ONLY
)
set(CONFIGURATIONS ${ACMAKE_COPY_DEPENDENCIES_CONFIGURATIONS})
add_custom_command(
TARGET ${TARGET}
POST_BUILD
COMMAND ${CMAKE_COMMAND}
-DTARGET_FILE_PATH=$<TARGET_FILE:${TARGET}>
-DCMAKE_BUILD_TYPE=$<CONFIGURATION>
-P ${CMAKE_CURRENT_BINARY_DIR}/acmake_fixup${ACMAKE_COPY_DEPENDENCIES_SUFFIX}.cmake
VERBATIM
)
if(ACMAKE_COPY_DEPENDENCIES_INSTALL)
configure_file(
${ACMAKE_MAKE_FIXUP_INSTALL_PATH}
${CMAKE_CURRENT_BINARY_DIR}/acmake_make_fixup_install${ACMAKE_COPY_DEPENDENCIES_SUFFIX}.cmake
@ONLY
)
add_custom_command(
TARGET ${TARGET}
POST_BUILD
COMMAND ${CMAKE_COMMAND}
-DTARGET_FILE_PATH=${ACMAKE_COPY_DEPENDENCIES_INSTALL_DIR}/$<TARGET_FILE_NAME:${TARGET}>
-DCMAKE_BUILD_TYPE=$<CONFIGURATION>
-DINSTALL_TEMPLATE=${ACMAKE_FIXUP_INSTALL_PATH}
-DINSTALL_SCRIPT=${CMAKE_CURRENT_BINARY_DIR}/acmake_fixup_install${ACMAKE_COPY_DEPENDENCIES_SUFFIX}.cmake
-P ${CMAKE_CURRENT_BINARY_DIR}/acmake_make_fixup_install${ACMAKE_COPY_DEPENDENCIES_SUFFIX}.cmake
VERBATIM
)
string(
REPLACE "${CMAKE_INSTALL_PREFIX}" "\${CMAKE_INSTALL_PREFIX}"
ACMAKE_COPY_DEPENDENCIES_INSTALL_DIR
${ACMAKE_COPY_DEPENDENCIES_INSTALL_DIR}
)
install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/acmake_fixup_install${ACMAKE_COPY_DEPENDENCIES_SUFFIX}.cmake)
endif()
endmacro()