summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt9
-rw-r--r--cmake/BuildDeps.cmake20
-rw-r--r--demo/CMakeLists.txt2
3 files changed, 17 insertions, 14 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2607734..6a9265f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,9 +8,9 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Build external dependencies (open62541, qtopcua) if not already built
include(cmake/BuildDeps.cmake)
-# Local QtOpcUa must come before system Qt so find_package picks up our build
-# instead of any system-installed QtOpcUa.
-list(PREPEND CMAKE_PREFIX_PATH "${QTOPCUA_BUILD_DIR}")
+# Tell Qt's find_package to also look in our local QtOpcUa install for
+# components (Qt6Config.cmake only searches its own install dir by default).
+list(PREPEND QT_ADDITIONAL_PACKAGES_PREFIX_PATH "${QTOPCUA_INSTALL_DIR}")
list(PREPEND CMAKE_PREFIX_PATH "${OPEN62541_INSTALL_DIR}")
find_package(Qt6 6.10.2 REQUIRED COMPONENTS Core Qml Quick OpcUa)
@@ -27,7 +27,8 @@ set(QML_IMPORT_PATH
# 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_BUILD_DIR}/lib" "${OPEN62541_INSTALL_DIR}/lib")
+set(CMAKE_BUILD_RPATH "${QTOPCUA_INSTALL_DIR}/lib"
+ "${OPEN62541_INSTALL_DIR}/lib")
add_subdirectory(src)
add_subdirectory(demo)
diff --git a/cmake/BuildDeps.cmake b/cmake/BuildDeps.cmake
index d105419..1b8eae3 100644
--- a/cmake/BuildDeps.cmake
+++ b/cmake/BuildDeps.cmake
@@ -1,11 +1,11 @@
# ======================================
-# BuildDeps.cmake
+# BuildDeps.cmake
#
-# Configure, build, and install open62541 and QtOpcUa from
-# git submodules under deps/.
+# Configure, build, and install open62541 and QtOpcUa from git submodules under
+# deps/.
#
-# Skip detection: if the built .so already exists, the
-# corresponding dep is skipped. Delete the file to rebuild.
+# Skip detection: if the built .so already exists, the corresponding dep is
+# skipped. Delete the file to rebuild.
# ======================================
set(OPEN62541_SOURCE_DIR "${CMAKE_SOURCE_DIR}/deps/open62541")
@@ -13,6 +13,7 @@ set(OPEN62541_BUILD_DIR "${CMAKE_BINARY_DIR}/deps/open62541-build")
set(OPEN62541_INSTALL_DIR "${CMAKE_BINARY_DIR}/deps/open62541-install")
set(QTOPCUA_SOURCE_DIR "${CMAKE_SOURCE_DIR}/deps/qtopcua")
set(QTOPCUA_BUILD_DIR "${CMAKE_BINARY_DIR}/deps/qtopcua-build")
+set(QTOPCUA_INSTALL_DIR "${CMAKE_BINARY_DIR}/deps/qtopcua-install")
# Verify submodules are initialized
if(NOT EXISTS "${OPEN62541_SOURCE_DIR}/CMakeLists.txt")
@@ -29,7 +30,7 @@ if(NOT EXISTS "${QTOPCUA_SOURCE_DIR}/CMakeLists.txt")
endif()
# ======================================
-# open62541
+# open62541
# ======================================
if(NOT EXISTS "${OPEN62541_INSTALL_DIR}/lib/libopen62541.so")
@@ -73,12 +74,12 @@ else()
endif()
# ======================================
-# QtOpcUa
+# QtOpcUa
# ======================================
find_program(QT_CMAKE_COMMAND bin/qt-cmake REQUIRED)
-if(NOT EXISTS "${QTOPCUA_BUILD_DIR}/lib/libQt6OpcUa.so")
+if(NOT EXISTS "${QTOPCUA_INSTALL_DIR}/lib/libQt6OpcUa.so")
message(STATUS "Configuring qtopcua in ${QTOPCUA_BUILD_DIR}...")
set(_cmd
@@ -89,6 +90,7 @@ if(NOT EXISTS "${QTOPCUA_BUILD_DIR}/lib/libQt6OpcUa.so")
"${QTOPCUA_BUILD_DIR}"
-G
Ninja
+ -DCMAKE_INSTALL_PREFIX=${QTOPCUA_INSTALL_DIR}
# Use our locally-built open62541, not the bundled copy
-DINPUT_open62541=system
-DCMAKE_PREFIX_PATH=${OPEN62541_INSTALL_DIR})
@@ -106,7 +108,7 @@ if(NOT EXISTS "${QTOPCUA_BUILD_DIR}/lib/libQt6OpcUa.so")
message(FATAL_ERROR "${_cmd_str} failed: ${_result}")
endif()
- message(STATUS "Installing qtopcua to ${QTOPCUA_BUILD_DIR}...")
+ message(STATUS "Installing qtopcua to ${QTOPCUA_INSTALL_DIR}...")
set(_cmd ${CMAKE_COMMAND} --install "${QTOPCUA_BUILD_DIR}")
execute_process(COMMAND ${_cmd} RESULT_VARIABLE _result)
if(_result)
diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt
index efdfc72..03c19d3 100644
--- a/demo/CMakeLists.txt
+++ b/demo/CMakeLists.txt
@@ -18,4 +18,4 @@ target_link_libraries(BobinkDemo PRIVATE Qt6::Quick BobinkQtOpcUaplugin)
# Tell the demo where to find the locally-built OpcUa plugin at runtime
target_compile_definitions(
- BobinkDemo PRIVATE QTOPCUA_PLUGIN_PATH="${QTOPCUA_BUILD_DIR}/plugins")
+ BobinkDemo PRIVATE QTOPCUA_PLUGIN_PATH="${QTOPCUA_INSTALL_DIR}/plugins")