Skip to content

Commit acaefbb

Browse files
committed
refactor with cmake
Signed-off-by: Smityz <smityz@qq.com>
1 parent 9e3e22b commit acaefbb

File tree

14 files changed

+528
-1519
lines changed

14 files changed

+528
-1519
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
target
2+
build
23
.vscode

CMakeLists.txt

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
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

Comments
 (0)