-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
35 lines (27 loc) · 1.23 KB
/
Copy pathCMakeLists.txt
File metadata and controls
35 lines (27 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
cmake_minimum_required(VERSION 3.10.0)
project(cpprustser VERSION 0.1.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(RUST_TARGET_DIR "${CMAKE_BINARY_DIR}/rust")
set(RUST_LIB_PATH "${RUST_TARGET_DIR}/debug/libcpprustser_lib.so")
add_custom_command(
OUTPUT ${RUST_LIB_PATH}
COMMAND cargo build --manifest-path ${CMAKE_SOURCE_DIR}/Cargo.toml --target-dir ${RUST_TARGET_DIR}
DEPENDS
${CMAKE_SOURCE_DIR}/Cargo.toml
${CMAKE_SOURCE_DIR}/src/lib.rs
${CMAKE_SOURCE_DIR}/src/ast_builder.rs
${CMAKE_SOURCE_DIR}/src/clang_parser.rs
${CMAKE_SOURCE_DIR}/src/schema.rs
${CMAKE_SOURCE_DIR}/src/ffi.rs
${CMAKE_SOURCE_DIR}/src/parser_registry.rs
${CMAKE_SOURCE_DIR}/example.h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Building Rust cdylib"
)
add_custom_target(cpprustser_rust ALL DEPENDS ${RUST_LIB_PATH})
add_executable(cpprustser main.cpp example.h cpp_rs_serde.h cpp_rs_reflect.h)
add_dependencies(cpprustser cpprustser_rust)
target_link_directories(cpprustser PRIVATE ${RUST_TARGET_DIR}/debug)
target_link_libraries(cpprustser PRIVATE cpprustser_lib)
set_target_properties(cpprustser PROPERTIES BUILD_RPATH "${RUST_TARGET_DIR}/debug")