首页 > 编程语言 >C++构建工具-构建系统

C++构建工具-构建系统

时间:2024-10-16 16:33:19浏览次数:9  
标签:make C++ 编译 构建 usr install 工具 local

构建

CI/CD     
CI 这步,首先需要一个版本控制系统,当前最好用的就是 git流程:
     主线分支上设置静态代码检查,用来检测每一笔提交的质量,比如命名规范等。
	 还会设置自动化单元测试,看守代码功能,并进行代码覆盖率分析
       代码拉取功能;
	   构建
	   安装包依赖项功能,依赖项需要自己在构建之前手动安装好;
	   创建二进制包功能,例如 Debian 包。
  CD,其自动化的把二进制产物部署到测试或生成环境,运行集成测试和冒烟测试。
构建命令行 构建工具 构建系统 构建平台

Gcc编译

 g++是GCC下专门用于编译C++项目的编译器
   很少源文件的时候
   
 源文件--目标文件--可执行文件
     引用调用其他外部子程序	 
	 头文件_include:
     函数库文件_lib:动态函数库和静态函数库
	 可执行文件_bin

Make编译

 ./configure --prefix=/opt/librdkafka/bin
 make  
 make  install
     编译完成的文件放置到 文件系统中
 
 makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。
 
 make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,
   而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的

make仅编译;
make install编译并安装;make clean删除临时文件

比如代码:./configure --prefix=/usr,意思是将该软件(bin,lib,include)安装在 /usr 下面。
  同时--配置文件安装目录 也可通过 --sys-config= 参数进行设定。
  (运行 make check 或 make test来进行一些测试)
make install 是安装到 /usr/local/bin  /usr/local/lib  /usr/local/include
make install prefix=/usr/local/ 和 make install等价,都是安装到 /usr/local/bin  /usr/local/lib /usr/local/include
make install prefix=/usr/ 是安装到 /usr/bin  /usr/lib    /usr/include
make install prefix=/usr/local/ DESTDIR=/tmp/build,则编译生成的文件会被放置在:
      DESTDIR是指定一个目录,让make install按安装目录的树形结构放置进去,比如:
     /tmp/build/usr/local/bin
     /tmp/build/usr/local/lib
     /tmp/build/usr/local/include

cmake

mkdir build && cd build
cmake ..
make	
  在执行cmake的过程中,会产生许多中间文件。为了避免产生的中间文件,污染我们的工作目录,就让CMake在build中执行。
    执行cmake ..就是根据上层目录编写的CMakeLists.txt,进行执行,
	最总生成Makefile文件,
	再执行make命令,自动编译代码,生成可执行文件
	
CMakelists.txt
    install用于指定在安装时运行的规则。
	它可以用来安装很多内容,可以包括目标二进制、动态库、静态库以及文件、目录、脚本等
针对 C/C++ 程序,最常用的构建系统就是 cmake,其底层依赖 makefile,而最下层就是 gcc/g++。

其他编译

 ros1 时我们主要使用 cmake ,以及基于 cmake 的 catkin 构建系统
ROS环境中的构建
 source /opt/ros/melodic/setup.bash
    src:源空间
    build:编译空间
    devel:开发空间
    install:安装空间
$ cd ~/catkin_ws #回到工作空间,catkin_make必须在工作空间下执行
$ catkin_make    #开始编译
$ source ~/catkin_ws/devel/setup.bash #刷新坏境 
 
 build 和 devel 文件夹由 catkin_make 命令自动创建;
 install 文件夹由 catkin_make install 命令自动创建
   catkin_make install 的作用是:
   创建一个可以运行,但不含源码的工程包,以便于给客户等其他人使用,但同时不至于泄露源码的这么一个作用

ROS2 
   colcon(CMake Order-of-Length CONstraints)是ROS2中用于构建、测试和分发工作区的构建工具。	

其他构建工具

  ninja 
  编译工具Bazel 

构建后的内容

#include <pthread.h>

ls /usr/include |grep pthread
ldconfig -p | grep pthread	
 /etc/ld.so.conf
 ldd  查看依赖的函数库	 

标签:make,C++,编译,构建,usr,install,工具,local
From: https://www.cnblogs.com/ytwang/p/18470251

相关文章

  • C++入门语法
    目录知识点补充1.C语言中的作用域作用域的种类作用域的影响2.以下是C++和C语言对全局变量和局部变量命名冲突的处理3.类型定义C++关键字命名空间1.C++提出的命名空间是为了解决C语言以下几个缺陷2.命名空间的3种定义方式2.1.正常的命名空间定义2.2.命名空间可以嵌......
  • C++ 排序算法(选择、冒泡、插入)
    八、选择排序(从小到大): 选择排序的基本思想是:每一趟从待排序的数据中,通过“打擂台”比较选出最小元素,放在这些数据的最前面。这样,第一趟把n个数中(第1个到第n个)最小的放在第一个位置,第二趟把剩余的n-1个数中(第2个到第n个)最小的放在第二个位置,第三趟把剩余的n......
  • Python包管理工具
    包管理工具Poetry包管理的无冕之王,相比pipenv,和python社区结合的更为紧密,非常方便的构建、打包、发布。工程方面有优势。创建和管理项目依赖关系。使用 pyproject.toml 来定义项目元数据、依赖关系和脚本。自动生成并管理虚拟环境。提供命令来构建、打包和发布包。允......
  • 数据治理规范:构建企业数据管理的基石
    作为当今企业最核心的资产之一的数据,正在被各行各业积极重视和利用。企业在进行数字化转型当中,必然要对数据进行全面的分析与挖掘、为企业的经营决策提供坚实的数据保障。为了科学有效的数据管理和规范,数据治理在这样的环境下应运而生,也成为了企业在竞争激烈的市场环境中生存的利器......
  • 【数据结构】自己动手写一个C++链表功能
    链表数据结构在操作数据时具有更高的性能,但同时因为其结构的原因会造成时间复杂度为O(N),因此理解链表结构的底层实现能够让我们在开发中对程序的性能进行进一步优化。如果你不知道什么是链表或者时间复杂度,可以参考我另外两篇文章:【数据结构】数组、链表、堆栈、队列到......
  • 使用 Spring 框架构建 MVC 应用程序:初学者教程
    SpringFramework是一个功能强大、功能丰富且设计精良的Java平台框架。它提供了一系列编程和配置模型,旨在简化和精简Java中健壮且可测试的应用程序的开发过程。人们常说Java太复杂了,构建简单的应用程序需要很长时间。尽管如此,Java提供了一个稳定的平台,周围有一个非常成熟......
  • 一个简单的价格模拟工具
    模拟交易价格对于量化分析建模很重要,下面是一个简单的价格模拟工具:首先,要找到标的的价格波动属性,而标的的波动每天都不一样,下面这个代码可以直观地绘制出价格波动的变化情况:defcalculate_volatility():#取日线数据data=get_data(symbol="rb",duration_seconds......
  • 敏捷转型中的敏捷实践:Leangoo领歌scrum工具私有部署解决方案
    近年来,敏捷开发逐渐成为企业项目管理中的热门话题。无论是互联网公司还是传统制造业,越来越多的企业通过敏捷方法,提升了项目的交付效率和团队的协作能力。在这个背景下,如何选择合适的敏捷管理工具,并确保其安全性和灵活性,成为了不少企业关注的焦点。 很多团队在讨论敏捷实践时,会......
  • c++面向对象的两种格式
            面向对象编程(OOP)是C++的一个重要特性,它允许你将代码组织成类(class)和对象(object),从而提高代码的可读性、可维护性和复用性。所以,在项目开发中使用面向对象编程是非常重要的,即便函数也可以提高封装性,但是,类的使用通俗来说,直接将函数封装,同时可以通过继承父类来大......
  • 怎么将pdf文件拆分为一页(或任意页)的小文件-免费工具
    怎么把PDF文件拆分成一页一页序言    目前市面上有关pdf处理的工具有很多,不过绝大多数的PDF处理工具都需要付费使用,且很多厂商甚至连试用的机会也不给用户,有试用的,也是限制在几页内,这样就导致用户还没有办法确认你的软件是否满足需要,就要先付费购买会员或者授权,跟强......