[GNC] GnuCash 3.2 Released

DaveC49 davidcousens at bigpond.com
Sun Jul 1 23:22:13 EDT 2018


John,

I'm using CMake v 3.5.1. Presumably the same or similar could be used to
create an uninstall target for Ninja. Their argument for providing a default
uninstall target seems a bit weak to me as you are not going to be issuing
the command in a build directory unless you really intend to uninstall those
useful files. 

The cmake_uninstall.cmake file contains a reference to

# This is taken from
https://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F

which has now been moved to Kitware
https://gitlab.kitware.com/cmake/community/wikis/FAQ

which has a very slow server by the look of it but eventually i found 
https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake

Can I do "make uninstall" with CMake?

By default, CMake does not provide the "make uninstall" target, so you
cannot do this. We do not want "make uninstall" to remove useful files
from the system.

If you want an "uninstall" target in your project, then nobody prevents
you from providing one. You need to delete the files listed in
install_manifest.txt file. Here is how to do it. First create file
cmake_uninstall.cmake.in in the top-level directory of the project:

if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
  message(FATAL_ERROR "Cannot find install manifest:
@CMAKE_BINARY_DIR@/install_manifest.txt")
endif(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")

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}")
    exec_program(
      "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
      OUTPUT_VARIABLE rm_out
      RETURN_VALUE rm_retval
      )
    if(NOT "${rm_retval}" STREQUAL 0)
      message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
    endif(NOT "${rm_retval}" STREQUAL 0)
  else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
    message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
  endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
endforeach(file)
Then in the top-level CMakeLists.txt add the following logic:

# uninstall target
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()
Now you will have an "uninstall" target at the top-level directory of
your build tree.

Instead of creating an "uninstall" target, Unix users could enter this
command in the shell:

xargs rm < install_manifest.txt



-----
David Cousens
--
Sent from: http://gnucash.1415818.n4.nabble.com/GnuCash-User-f1415819.html


More information about the gnucash-user mailing list