1+ macro (SETUP_RUST_PROJECT )
2+ if (NOT DEFINED RUST_BUILD_ROOT)
3+ set (RUST_BUILD_ROOT ${CMAKE_CURRENT_BINARY_DIR} /${RUST_PROJECT_NAME} -rust)
4+ endif ()
5+
6+ set (RUST_EP_PREFIX_DIR ${RUST_BUILD_ROOT} /ep)
7+ set (RUST_EP_BINARY_DIR ${RUST_BUILD_ROOT} /build)
8+ set (RUST_TARGET_DIR ${RUST_EP_BINARY_DIR} /target)
9+
10+ if (CMAKE_BUILD_TYPE MATCHES Debug)
11+ set (RUST_LIB_PATH ${RUST_TARGET_DIR} /debug/lib${RUST_PROJECT_NAME} .${RUST_LIB_TYPE} )
12+ set (RUST_BUILD_CMD_OPTION "" )
13+ else ()
14+ set (RUST_LIB_PATH ${RUST_TARGET_DIR} /release/lib${RUST_PROJECT_NAME} .${RUST_LIB_TYPE} )
15+ set (RUST_BUILD_CMD_OPTION "--release" )
16+ endif ()
17+ endmacro ()
18+
119macro (ADD_EXTERNAL_PROJ proj_name )
220
321include (ExternalProject )
422
23+ if (NOT DEFINED RUST_EP_PREFIX_DIR OR NOT DEFINED RUST_EP_BINARY_DIR OR NOT DEFINED RUST_TARGET_DIR)
24+ SETUP_RUST_PROJECT ()
25+ endif ()
26+
527ExternalProject_Add (
628 ${RUST_PROJECT_NAME}
7- PREFIX ${RUST_PROJECT_DIR }
29+ PREFIX ${RUST_EP_PREFIX_DIR }
830 SOURCE_DIR ${RUST_PROJECT_DIR}
9- BINARY_DIR ${RUST_PROJECT_DIR }
31+ BINARY_DIR ${RUST_EP_BINARY_DIR }
1032 CONFIGURE_COMMAND ""
11- BUILD_COMMAND cargo build ${RUST_BUILD_CMD_OPTION}
33+ BUILD_COMMAND ${CMAKE_COMMAND} -E env
34+ CARGO_TARGET_DIR=${RUST_TARGET_DIR}
35+ cargo build --manifest-path ${RUST_PROJECT_DIR} /Cargo.toml ${RUST_BUILD_CMD_OPTION}
1236 INSTALL_COMMAND ""
1337 BUILD_ALWAYS 1
1438 BUILD_BYPRODUCTS ${RUST_LIB_PATH}
@@ -18,4 +42,4 @@ add_dependencies(${proj_name} ${RUST_PROJECT_NAME})
1842
1943endmacro ()
2044
21- include_directories (${HOME_DATABASE} /manager/parser/rust-common )
45+ include_directories (${HOME_DATABASE} /manager/parser/rust-common )
0 commit comments