gpt4 book ai didi

cmake - 创建 TGZ 存档时更改布局

转载 作者:行者123 更新时间:2023-12-05 08:44:16 28 4
gpt4 key购买 nike

我使用 CMake 来管理具有以下布局的项目:

ProjectA/
include
doc
test
ProjectB
include
doc
test

我想用 CPack 打包一个 tar.gz source 归档文件,布局如下:

include/
ProjectA/
doc
test
ProjectB/
doc
test

新的顶级包含包含所有包含文件。

我尝试通过 CPACK_INSTALL_SCRIPT 运行 CMake 脚本来实现此目的,但此脚本在文件创建之前运行。我在哪里可以连接到 CPack 以获得这种效果?

似乎 installmake 也没有影响
package_source
可以,但是它对 make 有影响
。不幸的是 make package 也会构建和打包库,这是我不想发生的事情。我想要一个纯源代码分发 ala make dist.

最佳答案

您可以在 ProjectAProjectB 的 header 上调用 install(DIRECTORY include DESTINATION include) 并将它们安装到同一目录中。这会导致 CPack 将它们放在一起生成的包中。

更新

好的,我已经设法用 CPACK_INSTALL_SCRIPT 变量做到了这一点。

我创建了以下脚本:

set(CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@)

execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/A/ ${CMAKE_SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/B/ ${CMAKE_SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/A)
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/B)

CMakeLists.txt 中,我用 CMAKE_SOURCE_DIR 的实际值填充了它:

configure_file(CPackScript.cmake CPackScript.cmake @ONLY)

最后,我添加了 set(CPACK_INSTALL_SCRIPT ${CMAKE_BINARY_DIR}/CPackScript.cmake) 瞧!生成的包现在有 include 目录,包含来自 A/B/ 的 header ,而 A/B/ 目录不存在。

关于cmake - 创建 TGZ 存档时更改布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975333/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com