diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-23 14:32:42 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-23 14:55:26 +0100 |
| commit | dea81e8c330d75eaaa96e7f1915a9824ca23b15d (patch) | |
| tree | a57a5818d79288c2a00718be3d5754f429cb690a /cmake/BuildDeps.cmake | |
| parent | a132c560437fe09714c43aa2a8c52a529a95e32b (diff) | |
| download | BobinkQtOpcUa-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.cmake | 26 |
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() |
