cmake中是否有办法保存install_manifest.txt以备将来使用

cmake中是否有办法保存install_manifest.txt以备将来使用,cmake,Cmake,在安装时保存install_manifest.txt文件以便稍后用于卸载的最佳方法是什么 这是一个幼稚的尝试,因为此时文件不存在,所以无法工作 install(FILES "${CMAKE_BINARY_DIR}/install_manifest.txt" DESTINATION /etc/${PROJECT_NAME}) --编辑-- 我将使用@havogt的解决方案。我想我会添加最终结果,因为我还将manifest文件本身钉在了末尾。我还将我的destination变

在安装时保存install_manifest.txt文件以便稍后用于卸载的最佳方法是什么

这是一个幼稚的尝试,因为此时文件不存在,所以无法工作

install(FILES "${CMAKE_BINARY_DIR}/install_manifest.txt" DESTINATION /etc/${PROJECT_NAME})

--编辑--

我将使用@havogt的解决方案。我想我会添加最终结果,因为我还将manifest文件本身钉在了末尾。我还将我的destination变量留在那里,以使@KamilCuk更快乐一些

值得注意的是,这必须出现在最后,否则将丢失文件

set(INSTALL_SHAREDIR ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME})
install(CODE "string(REPLACE \";\" \"\\n\" MY_CMAKE_INSTALL_MANIFEST_CONTENT \"\$\{CMAKE_INSTALL_MANIFEST_FILES\}\")\n\
            file(WRITE ${CMAKE_BINARY_DIR}/MANIFEST.txt \"\$\{MY_CMAKE_INSTALL_MANIFEST_CONTENT\}\\n${INSTALL_SHAREDIR}/MANIFEST.txt\")")
install(FILES "${CMAKE_BINARY_DIR}/MANIFEST.txt" DESTINATION ${INSTALL_SHAREDIR})

我不认为有一个记录在案的方式来实现这一点。似乎编写
install\u manifest.txt
是安装过程中发生的最后一件事

然而,如果您真的想这样做,并且希望依赖CMake的实现细节,那么您可以按如下方式实现您想要的

用于编写
安装清单.txt
的代码来自。您可以使用相同的模式将内容写入所需的位置。该信息包含在CMake变量
CMake\u INSTALL\u MANIFEST\u文件中

将以下内容添加到CMake项目将把
install\u manifest.txt
的内容写入名为
my\u install\u manifest.txt
的文件中

install(CODE "string(REPLACE \";\" \"\\n\" MY_CMAKE_INSTALL_MANIFEST_CONTENT \"\$\{CMAKE_INSTALL_MANIFEST_FILES\}\")\n\
              file(WRITE my_install_manifest.txt \"\$\{MY_CMAKE_INSTALL_MANIFEST_CONTENT\}\")")
检查构建目录中的
cmake\u install.cmake
,查看安装期间将执行什么


显然,这不能保证在CMake的未来版本中起作用。

DESTINATION/etc/
Ugh,
etc
用于配置。对于特定于包的东西,请使用
/usr/share/the_-package/
干得好!对我来说,它产生完全相同的输出。我想说这是目前最好的。