使用没有相对路径的 CMake 创建 Zip

干凝胶

我想将构建工件捆绑到一个 zip 文件中,以便在交付服务器上交付它们。那是因为我将 zip 创建集成到 CMake 例程中。

# zip the final release files into the build artifact
# call the zipping with 'cmake --build . --target zip' or 'make zip'
string(TIMESTAMP DATE_STRING %Y%m%d)
add_custom_target(zip
    COMMAND ${CMAKE_COMMAND} -E tar "cfv" "${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}-${DATE_STRING}.zip" "--format=zip"  "--"
            "${PROJECT_SOURCE_DIR}/bin/release/*")

工件被捆绑到bin/releaseProjectSourceDir文件夹中。我的问题是,zip 文件具有我的构建目录中文件的相对路径。所以所有文件都位于../bin/release/这不是我想要的。我想将文件放在 zip 文件的“主文件夹”中。

我找到了在我的构建文件夹中准备 zip 文件夹的解决方案,但我认为这是非常不切实际的或者对我来说看起来很脏。

任何

AWORKING_DIRECTORY可以指定给add_custom command.

add_custom_target(zip 
    COMMAND ${CMAKE_COMMAND} -E tar cvf ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}-${DATE_STRING}.zip --format=zip .
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/release
)

您不需要示例中给出的所有额外引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Windows上使用CMake和相对路径创建交叉编译的归档文件(静态库)

带有相对路径的CMake安装目标

如何告诉CMake使用相对路径

如何让`zip` 在脚本中使用相对路径?

创建具有相对路径的URL对象

使用相对路径创建雪花舞台

创建位图时的相对路径

如何在CMake中包含带有项目相对路径的目录?

如何获得CMake单元测试的相对路径?

如何在CMAKE中指定相对路径?

为什么我使用 Cmake 构建和 VS 2019 构建时相对路径不同?

如何使用相对路径将共享库与CMake链接

为什么我使用 Cmake 构建和 VS 2019 构建时相对路径不同?

使用不带父目录的Cmake创建一个zip存档?

使用别名而不是相对路径创建的Typescript声明文件

使用相对路径从Excel单元格创建到Word文档的链接

将文件从使用-P标志创建的tar文件中提取到相对路径

Java-如何使用相对路径在目录中创建文件

在命令行上使用相对路径创建SVN差异

如何使用源的相对路径创建顶级命名卷?

使用python 3在相对路径中保存/创建文件

在.vbs文件中创建相对路径

创建目录并从相对路径加载文件

如何在Java中创建相对路径?

创建相对路径并独立于操作系统

为简单应用创建相对路径

Path.Combine 两个相对路径字符串来创建新的相对路径

如何在CMake生成的解决方案中使用相对路径打开源代码中的文件

CMake:从ExternalProject链接共享的C ++对象会生成具有相对路径的二进制文件,而不是绝对路径