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