Warning, /sdk/rust-qt-binding-generator/templates/qt_quick/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_AUTOUIC ON) 0033 set(CMAKE_AUTORCC ON) 0034 find_package(RustQtBindingGenerator REQUIRED) 0035 0036 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) 0037 0038 ### build commands ### 0039 0040 SET(RUST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/rust") 0041 if (MSVC) 0042 SET(RUST_LIB "${RUST_DIR}/${RUST_TARGET_DIR}/rust.lib") 0043 else() 0044 SET(RUST_LIB "${RUST_DIR}/${RUST_TARGET_DIR}/librust.a") 0045 endif() 0046 0047 # generate c++ and rust code from bindings.json 0048 add_custom_command( 0049 OUTPUT "${RUST_DIR}/src/interface.rs" 0050 "${CMAKE_CURRENT_SOURCE_DIR}/src/Bindings.h" 0051 "${CMAKE_CURRENT_SOURCE_DIR}/src/Bindings.cpp" 0052 COMMAND "${RustQtBindingGenerator_EXECUTABLE}" 0053 "${CMAKE_CURRENT_SOURCE_DIR}/bindings.json" 0054 DEPENDS bindings.json 0055 ) 0056 0057 # compile the rust code into a static library 0058 add_custom_command( 0059 OUTPUT "${RUST_LIB}" 0060 COMMAND ${Cargo_EXECUTABLE} build ${RUST_BUILD_FLAG} 0061 DEPENDS rust/src/lib.rs 0062 rust/src/implementation.rs 0063 rust/src/interface.rs 0064 WORKING_DIRECTORY "${RUST_DIR}" 0065 ) 0066 add_custom_target(rust_target DEPENDS "${RUST_LIB}") 0067 0068 list(APPEND Libs "${RUST_LIB}") 0069 list(APPEND Libs Qt5::Core Qt5::Quick Threads::Threads ${CMAKE_DL_LIBS}) 0070 set(SRCS src/main.cpp src/Bindings.cpp "qml.qrc") 0071 add_executable(MyExe ${SRCS}) 0072 add_dependencies(MyExe rust_target) 0073 target_link_libraries(MyExe ${Libs}) 0074 set_target_properties(MyExe PROPERTIES 0075 CXX_STANDARD 11 0076 CXX_STANDARD_REQUIRED ON 0077 )