1
+ cmake_minimum_required (VERSION 3.10 )
2
+ cmake_policy (SET CMP0048 NEW )
3
+ project (tikvcpp VERSION 0.1.0 )
4
+ set (CMAKE_CXX_STANDARD 17 )
5
+
6
+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
7
+ set (CARGO_CMD cargo build --verbose --target-dir=${CMAKE_CURRENT_BINARY_DIR} )
8
+ set (TARGET_DIR "debug" )
9
+ else ()
10
+ set (CARGO_CMD cargo build --release --target-dir=${CMAKE_CURRENT_BINARY_DIR} )
11
+ set (TARGET_DIR "release" )
12
+ endif ()
13
+
14
+ set (RUST_PART_LIB "${CMAKE_CURRENT_BINARY_DIR} /${TARGET_DIR} /libtikvrust.a" )
15
+ set (RUST_PART_CXX "${CMAKE_CURRENT_BINARY_DIR} /cxxbridge/client-cpp/src/lib.rs.cc" )
16
+ set (RUST_PART_H "${CMAKE_CURRENT_BINARY_DIR} /cxxbridge/client-cpp/src/lib.rs.h" )
17
+ add_custom_command (
18
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /Cargo.toml ${CMAKE_CURRENT_SOURCE_DIR} /src/lib.rs ${CMAKE_CURRENT_SOURCE_DIR} /build.rs
19
+ OUTPUT ${RUST_PART_LIB} ${RUST_PART_CXX} ${RUST_PART_H}
20
+ COMMAND CARGO_TARGET_DIR=${CMAKE_CURRENT_BINARY_DIR} RUSTFLAGS= "${RUST_FLAGS} " ${CARGO_CMD}
21
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
22
+ )
23
+
24
+ include_directories (
25
+ ${CMAKE_CURRENT_BINARY_DIR} /cxxbridge/client-cpp/src
26
+ ${CMAKE_SOURCE_DIR} /include
27
+ )
28
+ add_library (tikvcpp STATIC src/tikv_client.cpp ${RUST_PART_CXX} )
29
+ set_target_properties (tikvcpp PROPERTIES PUBLIC_HEADER "${CMAKE_SOURCE_DIR} /include/tikv_client.h;${RUST_PART_H} " )
30
+
31
+ include (CMakePackageConfigHelpers )
32
+ write_basic_package_version_file (
33
+ tikvcppConfigVersion.cmake
34
+ VERSION ${PACKAGE_VERSION}
35
+ COMPATIBILITY AnyNewerVersion
36
+ )
37
+
38
+ install (TARGETS tikvcpp
39
+ EXPORT tikvcppTargets
40
+ LIBRARY DESTINATION lib
41
+ PUBLIC_HEADER DESTINATION include /tikv
42
+ )
43
+
44
+ install (FILES ${RUST_PART_LIB} DESTINATION lib )
45
+
46
+ install (EXPORT tikvcppTargets
47
+ FILE tikvcppTargets.cmake
48
+ NAMESPACE tikvcpp::
49
+ DESTINATION lib/cmake/tikvcpp
50
+ )
51
+
52
+ configure_file (tikvcppConfig.cmake.in tikvcppConfig.cmake @ONLY )
53
+ install (FILES "${CMAKE_CURRENT_BINARY_DIR} /tikvcppConfig.cmake"
54
+ "${CMAKE_CURRENT_BINARY_DIR} /tikvcppConfigVersion.cmake"
55
+ DESTINATION lib/cmake/tikvcpp
56
+ )
0 commit comments