Skip to content

Commit

Permalink
added uninstall target
Browse files Browse the repository at this point in the history
added uninstall module to remove all project files from install location
module uses cmake remove command depending on cmake version

Signed-off-by: cristina-suteu <[email protected]>
  • Loading branch information
cristina-suteu authored and dNechita committed Sep 18, 2023
1 parent 21a0f0b commit d60dc51
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -337,3 +337,13 @@ if(NOT EXISTS "${TARGET_PATH}")
endif()

add_subdirectory(plugins)

if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)

add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()
35 changes: 35 additions & 0 deletions cmake_uninstall.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
endif()

file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
if(${CMAKE_VERSION} VERSION_LESS "3.17")
exec_program(
"${CMAKE_COMMAND}" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval
)
else()
exec_program(
"${CMAKE_COMMAND}" ARGS "-E rm -r \"$ENV{DESTDIR}${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval
)
endif()
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
endif()
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
endif()
endforeach()

set(OSC_LIB_DIR $ENV{DESTDIR}@CMAKE_INSTALL_PREFIX@/lib/osc)
set(OSC_SHARE_DIR $ENV{DESTDIR}@CMAKE_INSTALL_PREFIX@/share/osc)

file (REMOVE_RECURSE ${OSC_LIB_DIR})
file (REMOVE_RECURSE ${OSC_SHARE_DIR})

0 comments on commit d60dc51

Please sign in to comment.