当前位置:首页 > 经验 >

如何损坏压缩包文件(压缩文件损坏的压缩包怎样修复)

来源:原点资讯(www.yd166.com)时间:2024-03-29 05:08:43作者:YD166手机阅读>>

导语

在日常开发过程中难免会使用到第三方库或者需要将部分库分离另外存储,如果将库与代码放在一起难免会造成工程庞大,此时就可以采用将库与源码分离的方式,在编译时根据情况来判断是否需要下载。

步骤

下面来解析下具体操作步骤,以下以 oracle oci 库下载为例。

UNSET命令初始化本次编译用到的参数变量

#初始化oci库压缩包路径参数LOCAL_OCI_LIB_ZIP UNSET(LOCAL_OCI_LIB_ZIP CACHE) #初始化oci库解压路径参数LOCAL_OCI_LIB_DIR UNSET(LOCAL_OCI_LIB_DIR CACHE) ​ #初始化oci库压缩包下载路径参数LOCAL_OCI_LIB_ZIP_DL_DIR ​ UNSET(LOCAL_OCI_LIB_ZIP_DL_DIR CACHE) SET命令设置参数初始路径或名称

#设置oci库存放文件夹名称 SET(OCI_LIB_NAME "oci_x86_lib") ​ # 设置oci库压缩包解压文件夹名称 ​ SET(OCI_LIB_UNZIP_DIR_NAME ${OCI_LIB_NAME}) ​ #设置oci库头文件存放文件夹名称 ​ SET(LOCAL_OCI_include_DIR_NAME "oci_include") ​ #设置oci库压缩包名称 ​ SET(OCI_LIB_ZIP_NAME "oci_lib.tar.gz") ​ #设置oci库远程下载地址URL ​ SET(OCI_LIB_DOWNLOAD_URL "http://xxxxxx/oci_lib.tar.gz") ​ #设置oci库远程下载超时时间 ​ SET(DOWNLOAD_OCI_LIB_TIMEOUT 600 CACHE STRING "Timeout in seconds when downloading oci_lib.") FIND_FILE命令在路径下查找对应名称文件或文件夹是否存在,判断库是否已经下载或解压

​ #判断压缩包在文件夹ora_oci_lib下是否已经存在 ​ FIND_FILE(LOCAL_OCI_LIB_ZIP ​ NAMES ${OCI_LIB_ZIP_NAME} ​ PATHS "ora_oci_lib" ​ NO_DEFAULT_PATH ​ ) ​ #判断压缩包在文件夹ora_oci_lib下是否已经解压 ​ FIND_FILE(LOCAL_OCI_LIB_DIR ​ NAMES ${OCI_LIB_NAME} ​ PATHS "ora_oci_lib" ​ NO_DEFAULT_PATH ​ ) ​ #判断压缩包下载路径 ​ FIND_FILE(LOCAL_OCI_LIB_ZIP_DL_DIR ​ NAMES "" ​ PATHS "ora_oci_lib" ​ NO_DEFAULT_PATH ​ ) MESSAGE命令输出相应步骤的提示信息

​ #输出当前正进行的操作步骤信息 ​ MESSAGE(STATUS "Checking dblink ${OCI_LIB_UNZIP_DIR_NAME} ${LOCAL_OCI_LIB_ZIP} .....") 判断当前压缩包是否存在,如果不存在则开始根据设定的URL地址进行下载

​ #判断压缩包是否已经存在 ​ IF(NOT LOCAL_OCI_LIB_ZIP) ​ #不存在则进行下载操作,输出操作提示信息 ​ MESSAGE(STATUS "Downloading ${OCI_LIB_ZIP_NAME} to ${LOCAL_OCI_LIB_ZIP_DL_DIR}") ​ #从设定URL地址下载相应的压缩包 ​ FILE(DOWNLOAD ${OCI_LIB_DOWNLOAD_URL} ​ ${LOCAL_OCI_LIB_ZIP_DL_DIR}/${OCI_LIB_ZIP_NAME} ​ TIMEOUT ${DOWNLOAD_OCI_LIB_TIMEOUT} ​ STATUS ERR ​ SHOW_PROGRESS ​ ) ​ #判断下载是否存在错误 ​ IF(ERR EQUAL 0) ​ #如果下载无错误则设置压缩包名称标记下载成功 ​ SET(LOCAL_OCI_LIB_ZIP "${LOCAL_OCI_LIB_ZIP_DL_DIR}/${OCI_LIB_ZIP_NAME}") ​ ELSE() ​ #下载错误输出相关的提示信息 ​ MESSAGE(STATUS "Download failed, error: ${ERR}") ​ MESSAGE(FATAL_ERROR ​ "You can try downloading ${OCI_LIB_DOWNLOAD_URL} manually" ​ " using curl/wget or a similar tool" ​ ) ​ ENDIF() ​ ENDIF() 根据设定标记判断是否下载成功,如果下载成功则对压缩包文件进行初步的校验,无问题则进行解压缩操作

​ IF(LOCAL_OCI_LIB_ZIP ) ​ #输出相应的提示信息校验解压路径等 ​ MESSAGE(STATUS "Checking dblink ${OCI_LIB_UNZIP_DIR_NAME} ${LOCAL_OCI_INCLUDE_DIR_NAME} ${LOCAL_OTL_INCLUDE_DIR_NAME} ") ​ IF(NOT EXISTS "${LOCAL_OCI_LIB_ZIP_DL_DIR}/${OCI_LIB_UNZIP_DIR_NAME}" OR NOT EXISTS "${LOCAL_OCI_LIB_ZIP_DL_DIR}/${LOCAL_OCI_INCLUDE_DIR_NAME}" OR NOT EXISTS "${LOCAL_OCI_LIB_ZIP_DL_DIR}/${LOCAL_OTL_INCLUDE_DIR_NAME}" ) ​ #输出提示信息准备进行解压缩 ​ MESSAGE(STATUS "cd ${LOCAL_OCI_LIB_ZIP_DL_DIR}; tar xfz ${LOCAL_OCI_LIB_ZIP}") ​ #获取已下载的压缩包大小做基本的判断 ​ GET_FILE_SIZE(${LOCAL_OCI_LIB_ZIP} LOCAL_ZIP_SIZE) ​ #如果压缩包大小为0则输出对应的错误信息 ​ IF(LOCAL_ZIP_SIZE EQUAL 0) ​ #移除损坏压缩包,重置相应的参数 ​ FILE(REMOVE ${LOCAL_OCI_LIB_ZIP}) ​ UNSET(LOCAL_OCI_LIB_ZIP) ​ UNSET(LOCAL_OCI_LIB_ZIP CACHE) ​ MESSAGE(FATAL_ERROR "${OCI_LIB_ZIP_NAME} is zero length. Deleting it.") ​ ELSE() ​ #下载文件基本无问题,进入解压路径开始解压压缩包 ​ EXECUTE_PROCESS( ​ COMMAND ${CMAKE_COMMAND} -E tar xfz "${LOCAL_OCI_LIB_ZIP}" ​ WORKING_DIRECTORY "${LOCAL_OCI_LIB_ZIP_DL_DIR}" ​ RESULT_VARIABLE tar_result ​ ) ​ #判断解压是否成功 ​ IF (tar_result MATCHES 0) ​ #解压成功设置成功标记参数 ​ SET(OCI_LIB_FOUND 1 CACHE INTERNAL "") ​ ELSE() ​ #解压失败输出相应错误提示信息 ​ MESSAGE(STATUS "Failed to extract files.\n" ​ " Please try downloading and extracting yourself.\n" ​ " The url is: ${OCI_LIB_DOWNLOAD_URL}") ​ ENDIF() ​ ENDIF() ​ ENDIF() ​ ENDIF() 至此第三方库已经下载解压完成,后续可以根据自己源码,设置对应的链接路径进行编译

​ INCLUDE_DIRECTORIES 命令可以设置引用头文件包括路径 ​ LINK_DIRECTORIES 命令可以设置引用第三方库文件所在路径 编译完成后可以使用INSTALL命令将后续应用运行时需要使用的库,拷贝到指定的安装目录

CMAKE_INSTALL_PREFIX 为设置的安装路径 OCI_LIB_NAME为库放置文件夹 ​ # copy lib ​ INSTALL( ​ FILES ${allCopyFiles} DESTINATION ${CMAKE_INSTALL_PREFIX}/${OCI_LIB_NAME} ​ ) ,

栏目热文

压缩包损坏的解决方法(压缩包打开就显示已损坏)

压缩包损坏的解决方法(压缩包打开就显示已损坏)

在日常工作中,我们在网络上下载压缩包后,有时会碰到一个令人头疼的问题:压缩文件损坏,这使得压缩文件无法正常解压缩,严重影...

2024-03-29 05:09:32查看全文 >>

词牌名三个字唯美(好听的词牌名三个字)

词牌名三个字唯美(好听的词牌名三个字)

“未成曲调先有情”,词牌是一首词词调的名称,一些词牌名不仅契合诗词韵律,而且还十分唯美惊艳。小编整理了150个比诗还美的...

2024-03-29 05:03:47查看全文 >>

小学十大词牌名(小学生学过的词牌名大全)

小学十大词牌名(小学生学过的词牌名大全)

今天和大家分享36个词牌名的由来,提升孩子们的文学常识!诉衷情原唐玄宗时教坊曲,后来温庭筠依曲填词、并取名为《诉衷情》,...

2024-03-29 05:07:34查看全文 >>

诗里的词牌名有什么(诗词里面的词牌名)

诗里的词牌名有什么(诗词里面的词牌名)

词牌 ,也称为词格,是填词用的曲调名。词最初是伴曲而唱的,曲子都有一定的旋律、节奏。今天诗词君就带大家了解56个常见词牌...

2024-03-29 05:17:46查看全文 >>

十大最美词牌大全(那些惊艳绝美的词牌名)

十大最美词牌大全(那些惊艳绝美的词牌名)

六朝的乐府诗歌经历了漫长的生命的过程,由高峰走向了没落。到了五代之后,坊间的歌者们都喜欢唱词。到了宋代,词发展到了顶峰,...

2024-03-29 04:46:57查看全文 >>

怎么检查哪个压缩包损坏(压缩包老是损坏怎么办)

怎么检查哪个压缩包损坏(压缩包老是损坏怎么办)

用电脑手机看视频是我们日常生活中非常常见的事情,但有时我们会遇到视频文件无法播放的问题。这个时候,有很大的可能是视频文件...

2024-03-29 04:59:19查看全文 >>

鬼武者3详尽攻略图文大全(鬼武者3详尽攻略图文大全集)

鬼武者3详尽攻略图文大全(鬼武者3详尽攻略图文大全集)

其实在本人的印象中,周围很多朋友其实都是从《鬼武者3》入坑的该系列,作为PS2平台上的看家大作,三代的动作要素、解密其实...

2024-03-29 04:45:51查看全文 >>

鬼武者1枫篇攻略(鬼武者1所有宝箱开启方法)

鬼武者1枫篇攻略(鬼武者1所有宝箱开启方法)

《鬼武者HD复刻版》中地下寺院是玩家来到的第一个场景,本场景的主要难点为箱子的密码,接下来小编就为大家带来一篇“爱水仙的...

2024-03-29 05:04:23查看全文 >>

鬼武者3困难难度攻略详图(鬼武者3隐藏十大要素)

鬼武者3困难难度攻略详图(鬼武者3隐藏十大要素)

“游我推荐”是游戏频道推出的一档全新栏目,每天,这里都会向你推荐一款值得下载的好游戏。关注这个栏目,在不知道玩什么时,可...

2024-03-29 04:56:25查看全文 >>

鬼武者3困难攻略详图安利(鬼武者3攻略图解大全)

鬼武者3困难攻略详图安利(鬼武者3攻略图解大全)

全球知名游戏公司CAPCOM游戏大盘点:鬼武者3《鬼武者3》是在2004年2月26日由CAPCOM推出的一款PlaySt...

2024-03-29 05:09:18查看全文 >>

文档排行