C++_计算机应用开发流程

开发流程

  需求-痛点-不满点-构成开发需求
  需求排期-设计原型
  开发-编译-测试-发布-安装
   RedHat(Redhat Package Manager)的包管理规范进行打包,获取到相应的软件RPM发布包,然后使用rpm命令安装

make

  autotools 的工具集打包的。这个工具集包含 autoconf 、automake 等工具 生成 config脚本
  configure 脚本根据系统信息将 Makefile.in 模版文件转换为 Makefile文件
  make # 构建软件

make install

项目构建完成后往往需要安装或者打包发布
  软件已经被构建好并且可以执行,接下来要做的就是将可执行文件复制到最终的路径。
  make install 命令就是将可执行文件、第三方依赖包和文档复制到正确的路径
    install命令为项目生成一系列的安装规则。
    在执行make install时,所指定的安装规则会被依次执行,最终将目标文件(so,exe,其他文件等)复制到指定的路径下。  
    目标文件安装
        目标类型也就相对应的有三种,ARCHIVE 特指静态库,LIBRARY 特指动态库,RUNTIME 特指可执行目标二进制。
       参数中的 TARGETS 后面跟的就是我们通过 ADD_EXECUTABLE 或者 ADD_LIBRARY 定义的目标文件,可能是可执行二进制、动态库、静态库。
   普通文件的安装
   非目标文件的可执行程序安装(比如脚本之类)
   目录的安装 DESTINATION

cmake install

 intall()命令为工程生成安装规则,同一个源文件目录下的安装规则按照intall()命令的调用顺序在安装时(也就是使用make install时)执行。

catkin_make install

catkin_make install 的作用是:创建一个可以运行,但不含源码的工程包,以便于给客户等其他人使用,但同时不至于泄露源码的这么一个作用

发布-安装-部署

版本管理和发布流程
升级和优化--带历史数据-兼容-加密
  Linux 官方软件包管理工具	
Windows系统上进行软件开发部署时,
         有两种常见的方式:Copy Deployment(复制式部署)和 Runtime Redistributable Package(运行时可分发包
    Copy Deployment (复制式部署		
    	开发人员将已编译的应用程序和其相关依赖项直接复制到目标计算机上。
    	      这种方式通常用于单个或小规模的应用程序,特别是那些不需要在目标计算机上进行复杂配置或注册的简单应用
    		    缺少依赖项检查--繁琐的维护
    			涉及到动态库的定位问题,也就是说应用程序可执行文件在运行时,如何“找到”并加载这些动态库
    Runtime Redistributable Package (运行时可分发包):
          Runtime Redistributable Package 是一种将应用程序及其所需的运行时环境和依赖项打包在一起的部署方式。	
    	  复杂的依赖关系和注册过程
    将您的应用程序指向DLL文件,您可以在Windows注册表中注册应用程序路径(“AppPath”)	 
    
    Windows的注册表:是一个重要的系统组件,用于存储操作系统和应用程序的配置信息。
	windows刚开始的时候是和unix一样没有注册表的,它的程序信息在后缀为ini的文本文件中
    它类似于一个数据库,包含了各种键值对、参数、设置等,可以通过注册表来管理和修改系统和应用程序的行为
	  通过访问和修改注册表,可以改变系统和应用程序的行为,实现个性化定制和扩展
	  win下,往往在卸载一个软件后,注册表中仍会存留大量的无用信息,需要在用转们的软件清除

C++代码

1.源文件
 在一个C++工程中,并不是所有代码都会编译成可执行文件。
2.可执行文件 
      只有带main函数的文件才会生成可执行程序,
    而另一些代码,我们只想把它们打包成一个东西,供其他程序调用,这个东西叫做库(library)
	 没有main函数,这意味着这个库里没有可执行文件
3.库文件
 Linux中,库文件分成静态库和共享库两种。静态库以.a作为后缀名,共享库以.so结尾。
     所有库都是一些函数打包后的集合,
	 差别在于静态库每次被调用都会生成一个副本,而共享库则只有一个副本,更省空间。
	 
	 Linux系统库文件的头文件路径在usr/include,系统的下载好的库文件一般存放在/lib64/这个路径下
	 
	 常见的库文件有.lib和.dll两种形式,分别是静态库和动态库。
       静态库在形成exe文件时,全部被打包进去。
       动态库只是在运行的时候用到的函数才会被导入到exe中,可以动态的加载和卸载
	     当可执行文件用到动态库的某个函数时,链接到可执行文件当中的只有这些函数入口的地址,并没有这些函数的具体实现方法。
         动态链接是指在可执行文件运行之前,操作系统就会将该可执行文件运用到的动态库函数的具体实现代码从磁盘加载到内存里。
	
      生成动态库---.发布动态库---使用动态库		
		 

4.头文件
   库文件是一个压缩包,里面有编译好的二进制函数。
	 如果仅有.a或.so库文件,那么我们并不知道里面的函数具体是什么,调用的形式又是什么样的
     为了让别人(或自己)使用那个库,我们需要提供一个头文件,说明这些库里都有些什么。
	           因此,对库的使用者,只要拿到了头文件和库文件。就可以调用这个库
5.hpp文件



6.CMakeLists.txt
   一个小型的C++项目可能含有十几个类,各类间还存在着复杂的依赖关系。其中一部分要编译成可执行文件,另一部分编译成库文件
   我们对项目的编译管理工作从输入一串g++命令,
      变成了维护若干个比较直观的CMakeLists.txt文件,这将明显降低维护整个工程的难度

参考

 (学习笔记)制作一个简单的C++工程 https://blog.csdn.net/qq_59475883/article/details/123152360
posted @ 2023-10-30 20:18  辰令  阅读(17)  评论(0编辑  收藏  举报