61 lines
2.2 KiB
CMake
61 lines
2.2 KiB
CMake
# - create an uninstall target for CMake installed projects
|
|
#
|
|
# Taken from example on CMake Wiki:
|
|
#
|
|
# http://www.cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
|
|
#
|
|
# Available under Attribution 2.5 license
|
|
#
|
|
#
|
|
|
|
function(WRITE_UNINSTALL_TARGET_SCRIPT)
|
|
# Create uninstall target template file, if it doesn't exist...
|
|
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in)
|
|
set(__uninstall_filename ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake.in)
|
|
# BEGIN actual write to file...
|
|
file(WRITE ${__uninstall_filename} "\# - uninstall target template\n\#")
|
|
file(APPEND ${__uninstall_filename} "
|
|
if (NOT EXISTS \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\")
|
|
message(FATAL_ERROR \"Cannot find install manifest: \\\"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\\\"\")
|
|
endif(NOT EXISTS \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\")
|
|
|
|
file(READ \"\@CMAKE_CURRENT_BINARY_DIR\@/install_manifest.txt\" files)
|
|
string(REGEX REPLACE \"\\n\" \";\" files \"\${files}\")
|
|
|
|
foreach (file \${files})
|
|
message(STATUS \"Uninstalling \\\"\$ENV{DESTDIR}\${file}\\\"\")
|
|
if (EXISTS \"\$ENV{DESTDIR}\${file}\")
|
|
execute_process(
|
|
COMMAND \@CMAKE_COMMAND\@ -E remove \"\$ENV{DESTDIR}\${file}\"
|
|
OUTPUT_VARIABLE rm_out
|
|
RESULT_VARIABLE rm_retval
|
|
)
|
|
if(NOT \${rm_retval} EQUAL 0)
|
|
message(FATAL_ERROR \"Problem when removing \\\"\$ENV{DESTDIR}\${file}\\\"\")
|
|
endif (NOT \${rm_retval} EQUAL 0)
|
|
else (EXISTS \"\$ENV{DESTDIR}\${file}\")
|
|
message(STATUS \"File \\\"\$ENV{DESTDIR}\${file}\\\" does not exist.\")
|
|
endif (EXISTS \"\$ENV{DESTDIR}\${file}\")
|
|
endforeach(file)
|
|
|
|
") # END of appending to file...
|
|
endif()
|
|
endfunction()
|
|
|
|
|
|
|
|
# Call the file writing function, if needed
|
|
WRITE_UNINSTALL_TARGET_SCRIPT()
|
|
|
|
# Configure the file that reads the install manifest and processes the files
|
|
configure_file(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
|
IMMEDIATE @ONLY)
|
|
|
|
# Add the uninstall target
|
|
add_custom_target(uninstall
|
|
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
|
|
|
|