Warning, /sdk/rust-qt-binding-generator/examples/todos/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 project (my_rust_qt_quick_project) 0002 0003 cmake_minimum_required(VERSION 3.10 FATAL_ERROR) 0004 cmake_policy(SET CMP0046 NEW) 0005 cmake_policy(SET CMP0063 NEW) 0006 cmake_policy(SET CMP0071 NEW) 0007 LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") 0008 0009 string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER) 0010 if(CMAKE_BUILD_TYPE_UPPER STREQUAL DEBUG) 0011 set(RUST_TARGET_DIR target/debug/) 0012 set(RUST_BUILD_FLAG) 0013 else() 0014 set(RUST_TARGET_DIR target/release/) 0015 set(RUST_BUILD_FLAG --release) 0016 endif() 0017 0018 ### find dependencies ### 0019 0020 include(FeatureSummary) 0021 find_package(Cargo REQUIRED) 0022 find_package(Rust REQUIRED) 0023 set(CMAKE_THREAD_PREFER_PTHREAD TRUE) 0024 find_package(Threads REQUIRED) 0025 0026 set(QT_MIN_VERSION "5.6.0") 0027 find_package(Qt5 ${QT_MIN_VERSION} CONFIG 0028 REQUIRED COMPONENTS Core Quick 0029 ) 0030 set(CMAKE_INCLUDE_CURRENT_DIR ON) 0031 set(CMAKE_AUTOMOC ON) 0032 set(CMAKE_AUTORCC ON) 0033 find_package(RustQtBindingGenerator REQUIRED) 0034 0035 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) 0036 0037 ### build commands ### 0038 0039 SET(RUST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/rust") 0040 if (MSVC) 0041 SET(RUST_LIB "${RUST_DIR}/${RUST_TARGET_DIR}/rust.lib") 0042 else() 0043 SET(RUST_LIB "${RUST_DIR}/${RUST_TARGET_DIR}/librust.a") 0044 endif() 0045 0046 # generate c++ and rust code from bindings.json 0047 add_custom_command( 0048 OUTPUT "${RUST_DIR}/src/interface.rs" 0049 "${CMAKE_CURRENT_SOURCE_DIR}/src/Bindings.h" 0050 "${CMAKE_CURRENT_SOURCE_DIR}/src/Bindings.cpp" 0051 COMMAND "${RustQtBindingGenerator_EXECUTABLE}" #--overwrite-implementation 0052 "${CMAKE_CURRENT_SOURCE_DIR}/bindings.json" 0053 DEPENDS bindings.json 0054 ) 0055 0056 # compile the rust code into a static library 0057 add_custom_command( 0058 OUTPUT "${RUST_LIB}" 0059 COMMAND ${Cargo_EXECUTABLE} build ${RUST_BUILD_FLAG} 0060 DEPENDS rust/src/lib.rs 0061 rust/src/implementation.rs 0062 rust/src/interface.rs 0063 WORKING_DIRECTORY "${RUST_DIR}" 0064 ) 0065 add_custom_target(rust_target DEPENDS "${RUST_LIB}") 0066 0067 list(APPEND Libs "${RUST_LIB}") 0068 if (MSVC) 0069 list(APPEND Libs WS2_32.LIB Userenv.lib) 0070 endif() 0071 list(APPEND Libs Qt5::Core Qt5::Quick Threads::Threads ${CMAKE_DL_LIBS}) 0072 set(SRCS src/main.cpp src/Bindings.cpp "qml.qrc") 0073 add_executable(todos ${SRCS}) 0074 add_dependencies(todos rust_target) 0075 target_link_libraries(todos ${Libs}) 0076 set_target_properties(todos PROPERTIES 0077 CXX_STANDARD 11 0078 CXX_STANDARD_REQUIRED ON 0079 )