构建
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