【jenkins+cmake+svn管理c++项目】jenkins回传文件到svn(windows)

书接上文:创建一个项目
在经过cmake+msbuild顺利生成动态库之后,考虑到我一个项目可能会生成多个动态库,它们分散在build内的不同文件夹,我希望能将它们收拢到一个文件夹下,并将其回传到svn。

一、动态库移位—cmake实现

在linux环境中

,生成动态库或可执行程序的那一层cmakelist.txt中末尾添加以下代码:

install(TARGETS aaaRUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/binLIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/binARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)

解释:
aaa: 动态库名字,假如你的动态库叫libaaa.so,这里就写aaa。
${CMAKE_INSTALL_PREFIX}: 想要存放的文件夹路径,提前定义好。
RUNTIME :可执行程序;LIBRARY :动态库;ARCHIVE :静态库。

设置好之后,在运行完cmakemake命令之后再运行make install命令,这个命令会根据上面的代码将你的动态库拷贝到你设置好的文件夹。

windows环境

,生成动态库或可执行程序的那一层cmakelist.txt中末尾添加以下代码:

if(WIN32)		
SET_TARGET_PROPERTIES(aaa PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/bin") 	
endif()	

设置好之后,运行完msbuild命令,生成的动态库会自动被剪切到设置好的文件夹中,无需增加别的命令。这里与linux不同的是可执行程序和动态库都用RUNTIME_OUTPUT_DIRECTORY ,没有RUNTIME和LIBRARY之分。


如图,我的两个动态库都被剪切到dist目录里边了

二、文件回传svn

我希望将dist文件夹中的内容回传到svn。

方案一 使用svn publisher plugin 这个插件

插件安装方法看:创建一个项目
安装完成之后在system设置里边添加上插件的配置信息,如下图

这里是引用

然后再项目配置中“构建后操作步骤”选择下图选项:

这里是引用

并做以下设置:
svn url: 要上传到的svn路径
target path: jenkins工作空间中你准备好的动态库的目录
items: 要上传的文件

这里是引用

但是,很遗憾,我配置好了运行之后也显示success了,但是svn上边始终没有出现我上传的文件,完全摸不着头脑,有解决思路的朋友请留言,十分感谢!

方案二 使用svn commit命令上传

1、svn命令

由于插件不起作用,那我想让jenkins像一般客户端一样通过update、commit等方式来操作svn。
这个前提是服务器本身就能够在cmd中使用svn命令!打开cmd,输入svn --version检查一下,如果能用那就完美,如果不能用,首先检查系统环境变量中Path路径是否 设置,还没设置的话太好添加上就可以了。如果Path设置过了依然不能用,哦吼,就只能重装svn了。参考:https://blog.csdn.net/u010648555/article/details/50596303

2、upgrade

重装之后,我在jenkins拉取代码的文件夹内右键发现没有出现update和commit按钮,而是一个upgrade的提示语,查了帖子说是拉取代码的svn版本比服务端安装的svn版本低,需要先upgrade一下,服务端的svn才能正常读取。另外,注意upgrate命令必须在项目的最外层执行
在这里插入图片描述
这里补充一下,我发现在system配置中svn的版本号默认为1.4,我将其改为最高的1.8之后,不用执行upgrade命令,也能正常commit了
在这里插入图片描述

3、add+commit

如果你要上传的是原本svn路径中没有的文件,那么仅仅commit是没有用的,需要先用add命令将其纳入版本控制中,再commit

于是,我最终的命令如下图:

这里是引用

mkdir build
cd build
cmake ../ -A x64 -DCMAKE_CL_64=true
msbuild aaa.sln /p:Configuration=Release /p:Platform=x64
cd ..
svn upgrade
cd dist
svn add *
svn commit -m " test: Jenkins controls SVN's submission"

不过这种方式有一点不好,就是不能直接将某个目录下的文件上传到其它的svn路径,要上传只能先拷贝到另一个svn拉取下来的目录中,然后再在那个目录中使用commit命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

场效应管(MOS管)知识点总结

目录 一、场效应管(FET)基础知识 1.名称 2.电路符号 3.分类 4.应用场景 5.厂商介绍 二、MOS管G、S、D以及判定 三、耗尽型场效应管工作原理 (耗尽型:depletion mode) 四、NMOS与PMOS的区别 (区别:difference) (多晶硅:polysilicon) …

深度学习十大算法之Diffusion扩散模型

1. 引言 扩散模型在近年来成为了热门话题,其火速蹿红主要归功于在图像生成领域的突破应用。尤其是一些从文本到图像的生成技术,它们成功地运用了扩散模型来创建令人惊叹的逼真图像。如果你听说过某个应用能够迅速且高质量地生成图像,那么很可…

数据链路层之信道:数字通信的桥梁与守护者

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

C#/BS手麻系统源码 手术麻醉管理系统源码 商业项目源码

C#/BS手麻系统源码 手术麻醉管理系统源码 商业项目源码 手麻系统从麻醉医生实际工作环境和流程需求方面设计,与HIS,LIS,PACS,EMR无缝连接,方便查看患者的信息;实现术前、术中、术后手术麻醉信息全记录;减少麻醉医师在…

awesome-cheatsheets:超级速查表 - 编程语言、框架和开发工具的速查表

awesome-cheatsheets:超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需要知道的东西 官网:GitHub - skywind3000/awesome-cheatsheets: 超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需…

鸿蒙之路由跳转router

router的使用都是基于Entry修饰的组件。 都是基于resources/base/profile/main-page.json中的路由配置来跳转的 router提供下列的几个方法 1.pushUrl -压栈一层盖一层(在鸿蒙中页面栈支持最大数值是32) 2.replaceUrl会替换当前页面,不管是不是同一个页面&#xf…

P6学习:解析P6 WBS-工作分解结构的原则

前言 WBS,及Work Breakdown Structure,中文工作分解结构,是总结工作阶段的项目的层次结构分解。 WBS 就像项目的大纲——它将项目分解为特定的可交付成果或阶段。 然后将活动添加到这些层中以创建项目计划的时间表。 WBS 使用流程会有所不…

linux命令之tput

1.tput介绍 linux命令tput是可以在终端中进行文本和颜色的控制和格式化,其是一个非常有用的命令 2.tput用法 命令: man tput 3.样例 3.1.清除屏幕 命令: tput clear [rootelasticsearch ~]# tput clear [rootelasticsearch ~]# 3.2.…

love 2d Lua 俄罗斯方块超详细教程

源码已经更新在CSDN的码库里: git clone https://gitcode.com/funsion/love2d-game.git 一直在找Lua 能快速便捷实现图形界面的软件,找了一堆,终于发现love2d是小而美的原生lua图形界面实现的方式。 并参考相关教程做了一个更详细的&#x…

Https【Linux网络编程】

目录 一、为什么需要https 二、常见加密方法 1、对称加密 2、非对称加密 3、数据指纹 三、选择什么加密方案? 方案一:对称加密() 方案二:双方使用非对称加密(效率低) 方案三&#xff1a…

通过cplusplus网站学习函数用法演示

在我们学习c语言或者c时,总会遇到一些我们熟悉的库函数,这时候就需要我们通过cplusplus网站搜索学习,下面就由我为大家演示一下如何通过这个网站的页面学习函数的使用方法吧! atoi - C Reference (cplusplus.com) 我们今天要学习…

vue3全局控制Element plus所有组件的文字大小

项目框架vue-右上角有控制全文的文字大小 实现&#xff1a; 只能控制element组件的文字及输入框等大小变化&#xff0c;如果是自行添加div,text, span之类的控制不了。 配置流程 APP.vue 使用element的provide&#xff0c;包含app <el-config-provider :locale"loca…

Android MediaPlayer

MediaPlayer 类是媒体框架最重要的组成部分之一。此类的对象能够获取、解码以及播放音频和视频&#xff0c;而且只需极少量设置。它支持多种不同的媒体源&#xff0c;例如&#xff1a; • 本地资源 • 内部 URI&#xff0c;例如您可能从内容解析器那获取的 URI • 外部网址…

debian12,linux-image-6.6.13+bpo-amd64内核nvidia显卡驱动失效

问题 更新linux内核linux-image-6.6.13bpo-amd64和linux-headers-6.6.13bpo-common后无法进入图形化界面&#xff0c;nvidia驱动版本535.154.05&#xff0c;nvidia官方驱动 日志 /var/log/Xorg.1.log [ 3.834] (--) Log file renamed from "/var/log/Xorg.pid-11…

QA:ubuntu22.04.4桌面版虚拟机鼠标丢失的解决方法

前言 在Windows11中的VMWare Workstation17.5.1 Pro上安装了Ubuntu22.04.4&#xff0c;在使用过程中发现&#xff0c;VM虚拟机的鼠标的光标会突然消失&#xff0c;但鼠标其他正常&#xff0c;就是光标不见了&#xff0c;下面是解决办法。 内容 如下图&#xff0c;输入mouse&a…

【智能算法】天鹰优化算法(AO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;L Abualigah等人受到天鹰猎食过程启发&#xff0c;提出了天鹰优化算法&#xff08;Aquila Optimizer&#xff0c;AO&#xff09;。 2.算法原理 2.1算法思想 AO模拟天鹰 4 种不…

Vue系列——数据对象

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>el:挂载点</title> </head> <body&g…

表情生成器微信小程序版

1.纯前端输出&#xff0c;无需后台&#xff0c;无需域名&#xff0c;速度杠杠快&#xff01; 2.完美支持微信端和抖音端&#xff1b; 3.双端均支持配置开启流量主广告&#xff0c;包括&#xff1a;激励视频广告、插屏广告、banner广告、原生广告、封面广告等&#xff1b; 4.…

刷题日记——国家名称排序

7.国家名称排序 分析 一开始打算用二维的字符数组来操作&#xff0c;但是数组指针玩不太明白&#xff0c;于是改用结构体&#xff0c;结构体country里面仅一个成员name&#xff08;字符数组&#xff09;&#xff0c;这样就有两种解题方法&#xff1a; 方法一&#xff1a;使用…

SpringBoot 整合Redis第1篇

SpringBoot是一个开发框架&#xff0c;Redis是一个高性能的键值存储数据库&#xff0c; 常用于缓存、会话管理、消息队列等应用场景。 定义 Redis是什么&#xff1f; 它是一个存储层级&#xff0c; 在实际项目中&#xff0c;位于关系数据库之上&#xff0c; 类似Android分为5…