mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-25 22:52:01 +00:00
feat: add uninstall target for CMake (#2265)
* add uninstall target for cmake * only add target when built as master project Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com> Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
This commit is contained in:
parent
94db5c5ed1
commit
6f6e9394ce
1
.gitignore
vendored
1
.gitignore
vendored
@ -32,7 +32,6 @@ MANIFEST
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
/dist
|
/dist
|
||||||
/build
|
/build
|
||||||
/cmake/
|
|
||||||
.cache/
|
.cache/
|
||||||
sosize-*.txt
|
sosize-*.txt
|
||||||
pybind11Config*.cmake
|
pybind11Config*.cmake
|
||||||
|
@ -246,3 +246,12 @@ if(PYBIND11_INSTALL)
|
|||||||
NAMESPACE "pybind11::"
|
NAMESPACE "pybind11::"
|
||||||
DESTINATION ${PYBIND11_CMAKECONFIG_INSTALL_DIR})
|
DESTINATION ${PYBIND11_CMAKECONFIG_INSTALL_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Uninstall target
|
||||||
|
if(PYBIND11_MASTER_PROJECT)
|
||||||
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/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()
|
||||||
|
23
cmake/cmake_uninstall.cmake.in
Normal file
23
cmake/cmake_uninstall.cmake.in
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Source: https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake
|
||||||
|
|
||||||
|
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}")
|
||||||
|
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()
|
||||||
|
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||||
|
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
Loading…
Reference in New Issue
Block a user