From b1c48069149fcd9ff128286cb059138b1df96c8f Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 11 Mar 2024 11:57:41 -0400 Subject: [PATCH] install(EXPORT): Drop REQUIRED from exported find_dependency calls In commit c6e6861e63 (install(EXPORT): Export find_dependency() calls, 2023-11-07, v3.29.0-rc1~439^2~1) we made the calls `REQUIRED`. However, a dependency is only required if the dependent package is required. `find_dependency` already forwards the `REQUIRED` mark, and also already marks the dependent package as not found if the dependency is missing. Fixes: #25756 --- Source/cmExportFileGenerator.cxx | 2 +- Tests/RunCMake/export/FindDependencyExport-check.cmake | 8 ++++---- .../install/EXPORT-FindDependencyExport-all-check.cmake | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index 37af5f0a13..f60a17ee84 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -1260,7 +1260,7 @@ void cmExportFileGenerator::GenerateFindDependencyCalls(std::ostream& os) for (auto const& it : packageDependenciesSorted) { if (it.second.Enabled == cmExportSet::PackageDependencyExportEnabled::On) { - os << "find_dependency(" << it.first << " REQUIRED"; + os << "find_dependency(" << it.first; for (auto const& arg : it.second.ExtraArguments) { os << " " << cmOutputConverter::EscapeForCMake(arg); } diff --git a/Tests/RunCMake/export/FindDependencyExport-check.cmake b/Tests/RunCMake/export/FindDependencyExport-check.cmake index 0cbb195200..6917c26438 100644 --- a/Tests/RunCMake/export/FindDependencyExport-check.cmake +++ b/Tests/RunCMake/export/FindDependencyExport-check.cmake @@ -2,19 +2,19 @@ file(READ "${RunCMake_TEST_BINARY_DIR}/mytargets.cmake" mytargets) if("${mytargets}" MATCHES "find_dependency\\(P1") string(APPEND RunCMake_TEST_FAILED "P1 dependency should not be exported but it is\n") endif() -if(NOT "${mytargets}" MATCHES "find_dependency\\(P2 REQUIRED \"VERSION\" \"1\\.0\"\\)") +if(NOT "${mytargets}" MATCHES "find_dependency\\(P2 \"VERSION\" \"1\\.0\"\\)") string(APPEND RunCMake_TEST_FAILED "P2 dependency should be exported but it is not\n") endif() -if(NOT "${mytargets}" MATCHES "find_dependency\\(P3 REQUIRED\\)") +if(NOT "${mytargets}" MATCHES "find_dependency\\(P3\\)") string(APPEND RunCMake_TEST_FAILED "P3 dependency should be exported but it is not\n") endif() -if(NOT "${mytargets}" MATCHES "find_dependency\\(P4 REQUIRED\\)") +if(NOT "${mytargets}" MATCHES "find_dependency\\(P4\\)") string(APPEND RunCMake_TEST_FAILED "P4 dependency should be exported but it is not\n") endif() if("${mytargets}" MATCHES "find_dependency\\(P5") string(APPEND RunCMake_TEST_FAILED "P5 dependency should not be exported but it is\n") endif() -if(NOT "${mytargets}" MATCHES "find_dependency\\(P6 REQUIRED\\)") +if(NOT "${mytargets}" MATCHES "find_dependency\\(P6\\)") string(APPEND RunCMake_TEST_FAILED "P6 dependency should be exported but it is not\n") endif() if("${mytargets}" MATCHES "find_dependency\\(P7") diff --git a/Tests/RunCMake/install/EXPORT-FindDependencyExport-all-check.cmake b/Tests/RunCMake/install/EXPORT-FindDependencyExport-all-check.cmake index 6a8b2e539f..9b41436f68 100644 --- a/Tests/RunCMake/install/EXPORT-FindDependencyExport-all-check.cmake +++ b/Tests/RunCMake/install/EXPORT-FindDependencyExport-all-check.cmake @@ -1,4 +1,4 @@ file(READ "${RunCMake_TEST_BINARY_DIR}/root-all/lib/cmake/mylib/mylib-targets.cmake" contents) -if(NOT contents MATCHES "include\\(CMakeFindDependencyMacro\\)\nfind_dependency\\(P2 REQUIRED\\)\nfind_dependency\\(P1 REQUIRED\\)\n") +if(NOT contents MATCHES "include\\(CMakeFindDependencyMacro\\)\nfind_dependency\\(P2\\)\nfind_dependency\\(P1\\)\n") set(RunCMake_TEST_FAILED "Dependencies were not properly exported") endif()