我正在使用我的目标二进制文件和 header 文件创建一个zip文件。我正在尝试找到一种方法来使其工作而无需在zip文件中创建自命名文件夹,并且使zip文件仅在其根目录中包含目标二进制文件和头文件。

这是Dropbox上的一个小 zipper (5k)中的整个项目:link

这是我的构建和打包方式:

cd Build
cmake ..
make
make package

版本详细信息:



CMakeLists.txt
cmake_minimum_required(VERSION 3.2)
###################################################################### PROJECT
project(sis_cg_lib)
###################################################################### FILES

file(GLOB_RECURSE SIS_CG_LIB_INC "deps/*.h" "deps/*.inl" )
file(GLOB_RECURSE SIS_CG_LIB_SRC "sources/*.cpp" )

###################################################################### TARGET

add_library(SIS_CG_Lib ${SIS_CG_LIB_INC} ${SIS_CG_LIB_SRC})

###################################################################### SETTINGS

target_include_directories(SIS_CG_Lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/deps)

###################################################################### PACKAGE

install(DIRECTORY deps/
    DESTINATION deps
)

install(TARGETS SIS_CG_Lib
    ARCHIVE DESTINATION .
)

set(CPACK_OUTPUT_FILE_PREFIX "")
set(CPACK_GENERATOR "ZIP" CACHE STRING "Generators to support. semi-colon delimited list")
include(CPack)

所需的zip内容:
libSIS_CG_Lib.a
deps/vec3.h

zip 的实际内容:
sis_gc_lib-0.1.1-Linux/libSIS_CG_Lib.a
sis_gc_lib-0.1.1-Linux/deps/vec3.h

最佳答案

我一直在寻找的选项称为CPACK_INCLUDE_TOPLEVEL_DIRECTORY

我将此行添加到include(CPack)之前的我的CMakeLists.txt中:

set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)

关于c++ - cpack创建zip而不在zip中创建自命名目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54332099/

10-15 17:52