aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/BuildDeps.cmake
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-02-23 14:32:42 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-02-23 14:55:26 +0100
commitdea81e8c330d75eaaa96e7f1915a9824ca23b15d (patch)
treea57a5818d79288c2a00718be3d5754f429cb690a /cmake/BuildDeps.cmake
parenta132c560437fe09714c43aa2a8c52a529a95e32b (diff)
downloadBobinkQtOpcUa-dea81e8c330d75eaaa96e7f1915a9824ca23b15d.tar.gz
BobinkQtOpcUa-dea81e8c330d75eaaa96e7f1915a9824ca23b15d.zip
Check for OpenSSL before configuring QtOpcUa on Windows
Fail early with a clear install instruction instead of letting the QtOpcUa configure step produce a cryptic error. Remove quotes around OPENSSL_ROOT_DIR path — qt-cmake.bat passes them literally to CMake, breaking the path resolution. Use a variable instead so CMake handles the spaces natively. Also fix qt-cmake usage for build/install steps and minor formatting.
Diffstat (limited to 'cmake/BuildDeps.cmake')
-rw-r--r--cmake/BuildDeps.cmake26
1 files changed, 17 insertions, 9 deletions
diff --git a/cmake/BuildDeps.cmake b/cmake/BuildDeps.cmake
index b402510..8f819f3 100644
--- a/cmake/BuildDeps.cmake
+++ b/cmake/BuildDeps.cmake
@@ -85,7 +85,11 @@ endif()
# QtOpcUa
# ======================================
-find_program(QT_CMAKE_COMMAND NAMES qt-cmake qt-cmake.bat PATHS ${CMAKE_PREFIX_PATH} PATH_SUFFIXES bin REQUIRED)
+find_program(
+ QT_CMAKE_COMMAND
+ NAMES qt-cmake qt-cmake.bat
+ PATHS ${CMAKE_PREFIX_PATH}
+ PATH_SUFFIXES bin REQUIRED)
if(WIN32)
set(qtopcua_lib "Qt6OpcUa.lib")
@@ -110,8 +114,13 @@ if(NOT EXISTS "${QTOPCUA_INSTALL_DIR}/lib/${qtopcua_lib}")
-DINPUT_open62541=system
-DCMAKE_PREFIX_PATH=${OPEN62541_INSTALL_DIR})
if(WIN32)
- # Install with: winget install ShiningLight.OpenSSL.Dev
- list(APPEND _cmd -DOPENSSL_ROOT_DIR:PATH="C:/Program Files/OpenSSL-Win64")
+ set(_openssl_dir "C:/Program Files/OpenSSL-Win64")
+ if(NOT EXISTS "${_openssl_dir}")
+ message(
+ FATAL_ERROR "OpenSSL development files not found at ${_openssl_dir}.\n"
+ "Install with: winget install ShiningLight.OpenSSL.Dev")
+ endif()
+ list(APPEND _cmd -DOPENSSL_ROOT_DIR:PATH=${_openssl_dir})
endif()
execute_process(COMMAND ${_cmd} RESULT_VARIABLE _result)
if(_result)
@@ -120,7 +129,7 @@ if(NOT EXISTS "${QTOPCUA_INSTALL_DIR}/lib/${qtopcua_lib}")
endif()
message(STATUS "Building qtopcua in ${QTOPCUA_BUILD_DIR}...")
- set(_cmd ${CMAKE_COMMAND} --build "${QTOPCUA_BUILD_DIR}" --parallel)
+ set(_cmd ${QT_CMAKE_COMMAND} --build "${QTOPCUA_BUILD_DIR}" --parallel)
execute_process(COMMAND ${_cmd} RESULT_VARIABLE _result)
if(_result)
list(JOIN _cmd " " _cmd_str)
@@ -128,7 +137,7 @@ if(NOT EXISTS "${QTOPCUA_INSTALL_DIR}/lib/${qtopcua_lib}")
endif()
message(STATUS "Installing qtopcua to ${QTOPCUA_INSTALL_DIR}...")
- set(_cmd ${CMAKE_COMMAND} --install "${QTOPCUA_BUILD_DIR}")
+ set(_cmd ${QT_CMAKE_COMMAND} --install "${QTOPCUA_BUILD_DIR}")
execute_process(COMMAND ${_cmd} RESULT_VARIABLE _result)
if(_result)
list(JOIN _cmd " " _cmd_str)
@@ -139,12 +148,11 @@ else()
message(STATUS "qtopcua already built, skipping")
endif()
-if (WIN32)
+if(WIN32)
# On Windows DLLs must be next to the .exe (no RPATH). Copy them to bin/.
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
- file(GLOB _dep_dlls
- "${OPEN62541_INSTALL_DIR}/bin/*.dll"
- "${QTOPCUA_INSTALL_DIR}/bin/*.dll")
+ file(GLOB _dep_dlls "${OPEN62541_INSTALL_DIR}/bin/*.dll"
+ "${QTOPCUA_INSTALL_DIR}/bin/*.dll")
foreach(_dll ${_dep_dlls})
file(COPY "${_dll}" DESTINATION "${CMAKE_BINARY_DIR}/bin")
endforeach()