Skip to content

Commit 8bf8243

Browse files
authored
Merge pull request #22 from Smityz/cmake
refactor with cmake
2 parents 9e3e22b + 9beba5e commit 8bf8243

File tree

15 files changed

+548
-1519
lines changed

15 files changed

+548
-1519
lines changed

.github/workflows/ci.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
on:
2+
pull_request:
3+
branches:
4+
- master
5+
push:
6+
branches:
7+
- master
8+
9+
name: CI
10+
11+
jobs:
12+
build:
13+
name: build
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v2
17+
- name: Rust Cache
18+
uses: Swatinem/rust-cache@v1.4.0
19+
- name: cmake build
20+
run: cmake -S . -B build && cmake --build build

.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)