From 04c5492cb009441e9721b6f8b3c9c8e04106a0a4 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sat, 11 Jan 2025 19:10:06 +0100 Subject: FindPatch: Define imported target only for PROJECT CMAKE_ROLE This enables finding the patch command when using CMake in script modes. --- Help/release/dev/FindPatch.rst | 5 +++++ Modules/FindPatch.cmake | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 Help/release/dev/FindPatch.rst diff --git a/Help/release/dev/FindPatch.rst b/Help/release/dev/FindPatch.rst new file mode 100644 index 0000000..31efa66 --- /dev/null +++ b/Help/release/dev/FindPatch.rst @@ -0,0 +1,5 @@ +FindPatch +--------- + +* The :module:`FindPatch` module now supports running in script mode by skipping + the creation of the imported target. diff --git a/Modules/FindPatch.cmake b/Modules/FindPatch.cmake index 62277f8..65a21be 100644 --- a/Modules/FindPatch.cmake +++ b/Modules/FindPatch.cmake @@ -19,6 +19,9 @@ The following :prop_tgt:`IMPORTED` targets are also defined: ``Patch::patch`` The command-line executable. + .. versionchanged:: 3.32 + Imported target is defined only when :prop_gbl:`CMAKE_ROLE` is ``PROJECT``. + Example usage: .. code-block:: cmake @@ -60,12 +63,19 @@ endif() mark_as_advanced(Patch_EXECUTABLE) -if(Patch_EXECUTABLE AND NOT TARGET Patch::patch) +get_property(_patch_role GLOBAL PROPERTY CMAKE_ROLE) + +if( + _patch_role STREQUAL "PROJECT" + AND Patch_EXECUTABLE + AND NOT TARGET Patch::patch +) add_executable(Patch::patch IMPORTED) set_property(TARGET Patch::patch PROPERTY IMPORTED_LOCATION ${Patch_EXECUTABLE}) endif() unset(_patch_path) +unset(_patch_role) unset(_doc) include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) -- cgit v0.12