blob: 51b90e87758af2f283cd903683a6c1d912630c92 (
plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
|
cmake_minimum_required(VERSION 3.16)
project(BobinkQtOpcUa LANGUAGES CXX)
if(PROJECT_IS_TOP_LEVEL)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()
# Build external dependencies (open62541, qtopcua) if not already built
include(cmake/BuildDeps.cmake)
# Point CMake directly at the locally-built QtOpcUa packages.
# Qt6Config.cmake uses NO_DEFAULT_PATH when searching for components, so
# QT_ADDITIONAL_PACKAGES_PREFIX_PATH should work but is fragile in practice
# (Qt Creator can interfere). Setting <Package>_DIR is always checked first.
set(Qt6OpcUa_DIR "${QTOPCUA_INSTALL_DIR}/lib/cmake/Qt6OpcUa")
set(Qt6OpcUaPrivate_DIR "${QTOPCUA_INSTALL_DIR}/lib/cmake/Qt6OpcUaPrivate")
set(Qt6OpcUaTools_DIR "${QTOPCUA_INSTALL_DIR}/lib/cmake/Qt6OpcUaTools")
set(Qt6DeclarativeOpcua_DIR "${QTOPCUA_INSTALL_DIR}/lib/cmake/Qt6DeclarativeOpcua")
list(PREPEND CMAKE_PREFIX_PATH "${OPEN62541_INSTALL_DIR}")
find_package(Qt6 6.10.2 REQUIRED COMPONENTS Core Qml Quick OpcUa)
if(PROJECT_IS_TOP_LEVEL)
qt_standard_project_setup(REQUIRES 6.10.2)
# Set path for qmllint
set(QML_IMPORT_PATH
"${CMAKE_CURRENT_BINARY_DIR}/qml"
CACHE STRING "Path to locally built qml")
# Generate .qmlls.ini for QML Language Server. Useful once QtOpcUa is installed
# globally (qt-cmake --install build/deps/qtopcua-build) so qmlls can resolve
# all Qt QML imports without extra importPaths. set(QT_QML_GENERATE_QMLLS_INI ON
# CACHE BOOL "")
# Ensure the local QtOpcUa and open62541 libs are findable at runtime (needed
# because the Qt plugin loader dlopen's the open62541 backend).
set(CMAKE_BUILD_RPATH "${QTOPCUA_INSTALL_DIR}/lib"
"${OPEN62541_INSTALL_DIR}/lib")
endif()
add_subdirectory(src)
if(PROJECT_IS_TOP_LEVEL)
add_subdirectory(demo)
endif()
|