检索用于创建给定包的构建目录
Retrieve build directory used to create a given package
这是一个笼统的问题,甚至不确定它是否相关,但我对 CMake 的了解非常有限。
我正在使用一个使用 CMake 构建和安装的包。我们修改安装目录使用:
-DCMAKE_INSTALL_PREFIX:PATH=<path_I_want_the_package_to_be_installed>
但是,就我而言,我只知道安装目录的位置。
有没有办法,从install目录追溯我们安装的build目录?
不,CMake 不会将此信息存储在安装树中。按照设计,应该可以在安装后删除构建树,因此在安装树中放置悬空引用会很麻烦。它还会与使用 CPack 创建发布包发生冲突,并有泄露有关构建机器的私人信息的风险。
如果您想手动存储此信息,没有什么可以阻止您将 ${CMAKE_BINARY_DIR}
的值写入文件,然后为其编写 install()
规则。
此外,CMake 确实在构建树中存储了有关安装树的信息,因此您可以通过在文件系统中搜索名为 install_manifest.txt
的每个文件并搜索每个文件来一次性找到它为您的安装前缀。这可能不是唯一的,但它可能会帮助您在某些情况下恢复该信息。
这是一个笼统的问题,甚至不确定它是否相关,但我对 CMake 的了解非常有限。
我正在使用一个使用 CMake 构建和安装的包。我们修改安装目录使用:
-DCMAKE_INSTALL_PREFIX:PATH=<path_I_want_the_package_to_be_installed>
但是,就我而言,我只知道安装目录的位置。 有没有办法,从install目录追溯我们安装的build目录?
不,CMake 不会将此信息存储在安装树中。按照设计,应该可以在安装后删除构建树,因此在安装树中放置悬空引用会很麻烦。它还会与使用 CPack 创建发布包发生冲突,并有泄露有关构建机器的私人信息的风险。
如果您想手动存储此信息,没有什么可以阻止您将 ${CMAKE_BINARY_DIR}
的值写入文件,然后为其编写 install()
规则。
此外,CMake 确实在构建树中存储了有关安装树的信息,因此您可以通过在文件系统中搜索名为 install_manifest.txt
的每个文件并搜索每个文件来一次性找到它为您的安装前缀。这可能不是唯一的,但它可能会帮助您在某些情况下恢复该信息。