mirror of https://github.com/qt/qtgrpc.git
CMake: Don't force CONFIG mode for finding the OpenSSL dependency
When CMAKE_FIND_PACKAGE_PREFER_CONFIG is TRUE, find_package(OpenSSL) prefers CONFIG mode and may bypass package manager wrappers that only work in MODULE mode (e.g., vcpkg's wrapper). This can lead to finding the wrong OpenSSL installation, such as single-architecture system installations instead of the intended universal binaries from the package manager, causing linker errors when building for multiple architectures. Fix this by finding OpenSSL before setting CMAKE_FIND_PACKAGE_PREFER_CONFIG to TRUE. This ensures OpenSSL is found via MODULE mode where package manager wrappers can properly control the search. When gRPC's config file is loaded, it skips its own OpenSSL search, using the already-found targets instead. For test files, backup and restore the original CMAKE_FIND_PACKAGE_PREFER_CONFIG value to limit the scope of the change. For example files, keep the change simple without the backup/restore pattern. Change-Id: I985560fd5d57fa8036cc2ccb93c01a55e2efe1bc Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
parent
b74e433c76
commit
363998806d
|
|
@ -12,6 +12,9 @@ set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/grpc/chat")
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
# Find OpenSSL first since it's a transitive dependency that may not be available in CONFIG mode
|
||||||
|
find_package(OpenSSL)
|
||||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
||||||
|
|
||||||
find_package(Qt6 COMPONENTS ProtobufTools ProtobufQtCoreTypes)
|
find_package(Qt6 COMPONENTS ProtobufTools ProtobufQtCoreTypes)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,9 @@ cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
# Find OpenSSL first since it's a transitive dependency that may not be available in CONFIG mode
|
||||||
|
find_package(OpenSSL)
|
||||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
||||||
|
|
||||||
find_package(protobuf)
|
find_package(protobuf)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
project(magic8ball_server LANGUAGES CXX)
|
project(magic8ball_server LANGUAGES CXX)
|
||||||
|
|
||||||
|
# Find OpenSSL first since it's a transitive dependency that may not be available in CONFIG mode
|
||||||
|
find_package(OpenSSL)
|
||||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
||||||
|
|
||||||
find_package(Protobuf)
|
find_package(Protobuf)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
project(VehicleServer LANGUAGES CXX)
|
project(VehicleServer LANGUAGES CXX)
|
||||||
|
|
||||||
|
# Find OpenSSL first since it's a transitive dependency that may not be available in CONFIG mode
|
||||||
|
find_package(OpenSSL)
|
||||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
||||||
|
|
||||||
find_package(Protobuf)
|
find_package(Protobuf)
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,17 @@ if(QT_BUILD_STANDALONE_TESTS)
|
||||||
find_package(Qt6 ${PROJECT_VERSION} QUIET CONFIG OPTIONAL_COMPONENTS Gui Quick QuickTest)
|
find_package(Qt6 ${PROJECT_VERSION} QUIET CONFIG OPTIONAL_COMPONENTS Gui Quick QuickTest)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Find OpenSSL first since it's a transitive dependency that may not be available in CONFIG mode
|
||||||
|
find_package(OpenSSL QUIET)
|
||||||
|
|
||||||
|
set(_qt_grpc_backup_prefer_config ${CMAKE_FIND_PACKAGE_PREFER_CONFIG})
|
||||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
||||||
|
|
||||||
find_package(Protobuf QUIET)
|
find_package(Protobuf QUIET)
|
||||||
find_package(gRPC QUIET)
|
find_package(gRPC QUIET)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ${_qt_grpc_backup_prefer_config})
|
||||||
|
unset(_qt_grpc_backup_prefer_config)
|
||||||
|
|
||||||
set(QT_BUILD_TESTS_BATCHED FALSE)
|
set(QT_BUILD_TESTS_BATCHED FALSE)
|
||||||
qt_build_tests()
|
qt_build_tests()
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,18 @@
|
||||||
# Copyright (C) 2025 The Qt Company Ltd.
|
# Copyright (C) 2025 The Qt Company Ltd.
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
|
# Find OpenSSL first since it's a transitive dependency that may not be available in CONFIG mode
|
||||||
|
find_package(OpenSSL)
|
||||||
|
|
||||||
|
set(_qt_grpc_backup_prefer_config ${CMAKE_FIND_PACKAGE_PREFER_CONFIG})
|
||||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
||||||
|
|
||||||
find_package(Protobuf)
|
find_package(Protobuf)
|
||||||
find_package(gRPC)
|
find_package(gRPC)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ${_qt_grpc_backup_prefer_config})
|
||||||
|
unset(_qt_grpc_backup_prefer_config)
|
||||||
|
|
||||||
if(CMAKE_CROSSCOMPILING)
|
if(CMAKE_CROSSCOMPILING)
|
||||||
find_program(grpc_cpp_plugin grpc_cpp_plugin NO_CACHE)
|
find_program(grpc_cpp_plugin grpc_cpp_plugin NO_CACHE)
|
||||||
elseif(TARGET gRPC::grpc_cpp_plugin)
|
elseif(TARGET gRPC::grpc_cpp_plugin)
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,18 @@
|
||||||
# Copyright (C) 2022 The Qt Company Ltd.
|
# Copyright (C) 2022 The Qt Company Ltd.
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
|
# Find OpenSSL first since it's a transitive dependency that may not be available in CONFIG mode
|
||||||
|
find_package(OpenSSL)
|
||||||
|
|
||||||
|
set(_qt_grpc_backup_prefer_config ${CMAKE_FIND_PACKAGE_PREFER_CONFIG})
|
||||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
|
||||||
|
|
||||||
find_package(Protobuf)
|
find_package(Protobuf)
|
||||||
find_package(gRPC)
|
find_package(gRPC)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ${_qt_grpc_backup_prefer_config})
|
||||||
|
unset(_qt_grpc_backup_prefer_config)
|
||||||
|
|
||||||
if(CMAKE_CROSSCOMPILING)
|
if(CMAKE_CROSSCOMPILING)
|
||||||
find_program(grpc_cpp_plugin grpc_cpp_plugin NO_CACHE)
|
find_program(grpc_cpp_plugin grpc_cpp_plugin NO_CACHE)
|
||||||
elseif(TARGET gRPC::grpc_cpp_plugin)
|
elseif(TARGET gRPC::grpc_cpp_plugin)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue