# - 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)