From 807ace309a489d21163b5c671d9e449c06e14e20 Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Sun, 1 Feb 2015 11:20:43 +0000 Subject: Add a module to provide an uninstall target. This is basically just the code available on the CMake FAQ item about `make uninstall`, but packaged up in a convenient module. REVIEW: 122359 --- modules/ECMUninstallTarget.cmake | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 modules/ECMUninstallTarget.cmake (limited to 'modules/ECMUninstallTarget.cmake') diff --git a/modules/ECMUninstallTarget.cmake b/modules/ECMUninstallTarget.cmake new file mode 100644 index 00000000..d9363125 --- /dev/null +++ b/modules/ECMUninstallTarget.cmake @@ -0,0 +1,56 @@ +#.rst: +# ECMUninstallTarget +# ------------------ +# +# Add an ``uninstall`` target. +# +# By including this module, an ``uninstall`` target will be added to your CMake +# project. This will remove all files installed (or updated) by a previous +# invocation of the ``install`` target. It will not remove files created or +# modified by an ``install(SCRIPT)`` or ``install(CODE)`` command; you should +# create a custom uninstallation target for these and use ``add_dependency`` to +# make the ``uninstall`` target depend on it: +# +# .. code-block:: cmake +# +# include(ECMUninstallTarget) +# install(SCRIPT install-foo.cmake) +# add_custom_target(uninstall_foo COMMAND ${CMAKE_COMMAND} -P uninstall-foo.cmake) +# add_dependency(uninstall uninstall_foo) +# +# The target will fail if the ``install`` target has not yet been run (so it is +# not possible to run CMake on the project and then immediately run the +# ``uninstall`` target). +# +# .. warning:: +# +# CMake deliberately does not provide an ``uninstall`` target by default on +# the basis that such a target has the potential to remove important files +# from a user's computer. Use with caution. + +#============================================================================= +# Copyright 2015 Alex Merry +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file COPYING-CMAKE-SCRIPTS for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of extra-cmake-modules, substitute the full +# License text for the above reference.) + +if (NOT TARGET uninstall) + configure_file( + "${CMAKE_CURRENT_LIST_DIR}/ecm_uninstall.cmake.in" + "${CMAKE_BINARY_DIR}/ecm_uninstall.cmake" + IMMEDIATE + @ONLY + ) + + add_custom_target(uninstall + COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/ecm_uninstall.cmake" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + ) +endif() -- cgit v1.2.1 From a1d6d8f7259ade901a87b33edbef8b31bffb5e26 Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Fri, 6 Feb 2015 11:31:19 +0000 Subject: Document when modules were added to ECM. --- modules/ECMUninstallTarget.cmake | 2 ++ 1 file changed, 2 insertions(+) (limited to 'modules/ECMUninstallTarget.cmake') diff --git a/modules/ECMUninstallTarget.cmake b/modules/ECMUninstallTarget.cmake index d9363125..1e9bb91e 100644 --- a/modules/ECMUninstallTarget.cmake +++ b/modules/ECMUninstallTarget.cmake @@ -27,6 +27,8 @@ # CMake deliberately does not provide an ``uninstall`` target by default on # the basis that such a target has the potential to remove important files # from a user's computer. Use with caution. +# +# Since 1.7.0. #============================================================================= # Copyright 2015 Alex Merry -- cgit v1.2.1