Add cmake modules for finding cargo and rust

master
Jos van den Oever 2017-09-01 19:15:13 +02:00
parent 8ac0d8147a
commit 41b78c4257
5 changed files with 30 additions and 5 deletions

View File

@ -17,7 +17,8 @@ endif()
include(FeatureSummary)
find_program(CARGO cargo)
find_package(Cargo)
find_package(Rust)
# Find Qt modules
find_package(Qt5 ${QT_MIN_VERSION} CONFIG
@ -57,9 +58,13 @@ endif()
add_subdirectory(src)
enable_testing()
add_subdirectory(tests)
if(Qt5Widgets_FOUND AND Qt5Svg_FOUND)
if(Cargo_FOUND AND Rust_FOUND)
add_subdirectory(tests)
endif()
if(Qt5Widgets_FOUND AND Qt5Svg_FOUND AND Cargo_FOUND AND Rust_FOUND)
add_subdirectory(demo)
endif()

10
cmake/FindCargo.cmake Normal file
View File

@ -0,0 +1,10 @@
include(FindPackageHandleStandardArgs)
find_program(Cargo_EXECUTABLE cargo)
execute_process(COMMAND "${Cargo_EXECUTABLE}" --version
OUTPUT_VARIABLE Cargo_VERSION_OUTPUT)
STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+"
Cargo_VERSION "${Cargo_VERSION_OUTPUT}")
find_package_handle_standard_args(Cargo
REQUIRED_VARS Cargo_EXECUTABLE
VERSION_VAR Cargo_VERSION)
mark_as_advanced(Cargo_EXECUTABLE)

10
cmake/FindRust.cmake Normal file
View File

@ -0,0 +1,10 @@
include(FindPackageHandleStandardArgs)
find_program(Rust_EXECUTABLE rustc)
execute_process(COMMAND "${Rust_EXECUTABLE}" --version
OUTPUT_VARIABLE Rust_VERSION_OUTPUT)
STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+"
Rust_VERSION "${Rust_VERSION_OUTPUT}")
find_package_handle_standard_args(Rust
REQUIRED_VARS Rust_EXECUTABLE
VERSION_VAR Rust_VERSION)
mark_as_advanced(Rust_EXECUTABLE)

View File

@ -13,7 +13,7 @@ add_custom_command(
# compile the rust code into a static library
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/rust/${RUST_TARGET_DIR}/librust.a"
COMMAND ${CARGO} build ${RUST_BUILD_FLAG}
COMMAND ${Cargo_EXECUTABLE} build ${RUST_BUILD_FLAG}
DEPENDS rust/src/lib.rs
rust/src/implementation/mod.rs
rust/src/implementation/time_series.rs

View File

@ -21,7 +21,7 @@ function(rust_test NAME DIRECTORY)
add_custom_command(
OUTPUT "${DIR}/${RUST_TARGET_DIR}/librust.a"
COMMAND ${CARGO} build ${RUST_BUILD_FLAG}
COMMAND ${Cargo_EXECUTABLE} build ${RUST_BUILD_FLAG}
DEPENDS "${DIR}/src/lib.rs"
"${DIR}/src/implementation.rs"
"${DIR}/src/interface.rs"