rust-qt-binding-generator/demo/CMakeLists.txt

85 lines
3.3 KiB
CMake
Raw Normal View History

2017-08-12 06:17:24 -07:00
set(CMAKE_AUTORCC ON)
# generate c++ and rust code from fibonacci.json
2017-08-12 06:17:24 -07:00
add_custom_command(
2017-08-16 15:11:08 -07:00
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/rust/src/fibonacci_interface.rs"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Fibonacci.h"
# if the cpp file is marked GENERATED, CMake will not check it for moc
2017-08-21 15:51:48 -07:00
# "${CMAKE_CURRENT_SOURCE_DIR}/src/Fibonacci.cpp"
2017-08-22 04:45:34 -07:00
COMMAND ${CMAKE_BINARY_DIR}/src/rust_qt_binding_generator "${CMAKE_CURRENT_SOURCE_DIR}/fibonacci.json"
2017-08-16 15:11:08 -07:00
DEPENDS rust_qt_binding_generator fibonacci.json
2017-08-12 06:17:24 -07:00
)
# generate c++ and rust code from tree.json
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/rust/src/interface.rs"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Tree.h"
# if the cpp file is marked GENERATED, CMake will not check it for moc
2017-08-21 15:51:48 -07:00
# "${CMAKE_CURRENT_SOURCE_DIR}/src/Tree.cpp"
2017-08-22 04:45:34 -07:00
COMMAND ${CMAKE_BINARY_DIR}/src/rust_qt_binding_generator "${CMAKE_CURRENT_SOURCE_DIR}/tree.json"
DEPENDS rust_qt_binding_generator tree.json
)
# generate c++ and rust code from processes.json
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/rust/src/processes_interface.rs"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Processes.h"
# if the cpp file is marked GENERATED, CMake will not check it for moc
# "${CMAKE_CURRENT_SOURCE_DIR}/src/Processes.cpp"
COMMAND ${CMAKE_BINARY_DIR}/src/rust_qt_binding_generator "${CMAKE_CURRENT_SOURCE_DIR}/processes.json"
DEPENDS rust_qt_binding_generator processes.json
)
2017-08-21 15:51:48 -07:00
# generate c++ and rust code from time_series.json
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/rust/src/time_series_interface.rs"
"${CMAKE_CURRENT_SOURCE_DIR}/src/TimeSeries.h"
# if the cpp file is marked GENERATED, CMake will not check it for moc
# "${CMAKE_CURRENT_SOURCE_DIR}/src/TimeSeries.cpp"
2017-08-22 04:45:34 -07:00
COMMAND ${CMAKE_BINARY_DIR}/src/rust_qt_binding_generator "${CMAKE_CURRENT_SOURCE_DIR}/time_series.json"
2017-08-21 15:51:48 -07:00
DEPENDS rust_qt_binding_generator time_series.json
)
# compile the rust code into a static library
2017-08-12 06:17:24 -07:00
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/rust/${RUST_TARGET_DIR}/librust.a"
2017-08-30 23:53:12 -07:00
COMMAND ${CARGO} build ${RUST_BUILD_FLAG}
2017-08-12 06:17:24 -07:00
DEPENDS rust/src/lib.rs
2017-08-16 15:11:08 -07:00
rust/src/fibonacci_interface.rs
rust/src/fibonacci_implementation.rs
2017-08-12 06:17:24 -07:00
rust/src/implementation.rs
rust/src/interface.rs
2017-08-21 15:51:48 -07:00
rust/src/time_series_interface.rs
rust/src/time_series_implementation.rs
rust/src/processes_interface.rs
rust/src/processes_implementation.rs
2017-08-12 06:17:24 -07:00
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/rust"
)
add_custom_target(rust_target DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/rust/${RUST_TARGET_DIR}/librust.a")
2017-08-21 15:51:48 -07:00
list(APPEND DemoLibs "${CMAKE_CURRENT_SOURCE_DIR}/rust/${RUST_TARGET_DIR}/librust.a")
list(APPEND DemoLibs Qt5::Widgets Qt5::Svg)
2017-08-21 15:51:48 -07:00
if (Qt5Quick_FOUND)
list(APPEND DemoLibs Qt5::Quick)
endif()
2017-08-21 15:51:48 -07:00
if (Qt5QuickControls2_FOUND)
2017-08-20 15:37:00 -07:00
add_definitions(-DQTQUICKCONTROLS2)
2017-08-21 15:51:48 -07:00
# list(APPEND DemoLibs Qt5::QuickControls2)
endif()
if (Qt5Charts_FOUND)
list(APPEND DemoLibs Qt5::Charts)
2017-08-20 15:37:00 -07:00
endif()
2017-08-21 15:51:48 -07:00
set(Demo_SRCS src/main.cpp src/Fibonacci.cpp src/Tree.cpp src/TimeSeries.cpp
2017-08-25 16:22:08 -07:00
src/Processes.cpp src/SortedModel.cpp resource_file.qrc)
2017-08-12 06:17:24 -07:00
add_executable(Demo ${Demo_SRCS})
add_dependencies(Demo rust_target)
2017-08-21 15:51:48 -07:00
target_link_libraries(Demo ${DemoLibs})
2017-08-12 06:17:24 -07:00
set_target_properties(Demo PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)