开源代码使用Travis CI 之c++ Linux篇

简介: 1. Travis CI的作用 Travis CI 官网: https://travis-ci.org/ Travis CI是一个提供持续集成的工具,如果您正在开发一个开源项目,那么Travis CI是一个免费的工具,可以在有push动作时,自动完成编译,编译结果可以通过一个图标来显示。 比如我们在工程的README.md中加入下列代码 [![Build Status](https://

1. Travis CI的作用

Travis CI 官网:

https://travis-ci.org/

Travis CI是一个提供持续集成的工具,如果您正在开发一个开源项目,那么Travis CI是一个免费的工具,可以在有push动作时,自动完成编译,编译结果可以通过一个图标来显示。

比如我们在工程的README.md中加入下列代码

[![Build Status](https://api.travis-ci.org/aliyun/CicadaPlayer.svg?branch=develop)](https://travis-ci.org/aliyun/CicadaPlayer)

在github的项目主页上就可以显示这样一个图标

表示编译成功,这样任何人在任何时候都可以一目了然的知道该工程是否可以编译通过。

2. 如何实现一个Travis CI 

本文以开源代码https://github.com/aliyun/CicadaPlayer/ 为例简单介绍一下实现一个c++功能的编译实现。

先使用自己的github账号登录到Travis CI 官网,然后同步和设置自己的项目,这里就不多说了。当然Travis CI 官网也有很多文档可以去看。

Travis CI会默认查找工程里面的一个.travis.yml的文件,根据这个文件来执行整个编译过程。

想在Travis CI上实现自动化编译,前提是肯定需要在本地机器有自动化编译脚本,本文示例工程是跨平台的编译,我们先实现他的Linux平台的编译。

本文示例工程的编译流程可以参考

https://github.com/aliyun/CicadaPlayer/blob/develop/doc/compile_Linux.md

简单来说就是在Ubuntu 18.04的机器上安装一些软件,然后执行编译

  • 选择Ubuntu 18.04

     在Travis上可以选择Linux编译环境

os:
- linux  表示要使用Linux编译环境

dist: bionic 这个是Ubuntu的18.04的版本代号,表示要用Ubuntu 18.04,

这里注意,我们尽量选择本机编译环境和Travis环境一致,这样在编译出错的时候,我们很容易定位问题。我们这里都选择Ubuntu 18.04.

  • 安装一些软件

Ubuntu 上安装软件需要sudo权限,所以

sudo: required

一般在before_install阶段去安装一些工具

- sudo apt-get update
- sudo apt-get install -y yasm
- sudo apt-get install -y libsdl2-dev

由于本文示例工程使用的cmake版本比较高,根据Travis官方文档默认的cmake版本是3.12,所以我们要升级一下cmake
- wget "https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz"
- tar zxvf cmake-3.16.2-Linux-x86_64.tar.gz
- export PATH=`pwd`/cmake-3.16.2-Linux-x86_64/bin:$PATH

本文示例工程在Linux环境下需要使用clang,在Travis上也可以轻松实现
compiler:
- clang

后面两个阶段就是直接运行在本机已经运行通过的编译脚本了。 

language: cpp
sudo: required
dist: bionic
compiler:
- clang
os:
- linux

before_install:
- sudo apt-get update
- sudo apt-get install -y yasm
- sudo apt-get install -y libsdl2-dev
- wget "https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz"
- tar zxvf cmake-3.16.2-Linux-x86_64.tar.gz
- export PATH=`pwd`/cmake-3.16.2-Linux-x86_64/bin:$PATH

before_script:
- . setup.env
- cd external/
- ./build_external.sh Linux
- cd ../

script:
- cd cmdline/
- mkdir build
- cd build
- cmake ../
- make cicadaPlayer -j8

运行时,Travis会首先分配一个虚拟机给你,随便你在这个虚拟机里面怎么搞,编译完成后,虚拟机就删掉了。

我也是今天刚刚接触到Travis,如Android iOS macOS如何编译,都需要探索,如果支持多平台等,后面需要进一步学习。

 

 

相关文章
|
1月前
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
86 0
|
1月前
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
69 1
Linux C/C++之IO多路复用(aio)
|
18天前
|
人工智能 分布式计算 大数据
Linux操作系统:开源力量的崛起与影响###
一场技术革命的火种,如何燎原? 本文将带您深入探索Linux操作系统的诞生背景、核心特性及其对现代科技世界的深远影响。从1991年芬兰学生Linus Torvalds的一个小众项目,到如今成为支撑全球无数服务器、超级计算机及物联网设备的基石,Linux的发展既是一部技术创新史,也是开源文化胜利的见证。通过剖析其设计哲学、安全性、灵活性等关键优势,结合实例展示Linux在云计算、大数据处理等领域的广泛应用,本文旨在揭示Linux为何能在众多操作系统中脱颖而出,以及它如何塑造了我们今天的数字生活。 ###
|
1月前
|
资源调度 Linux 调度
Linux c/c++之进程基础
这篇文章主要介绍了Linux下C/C++进程的基本概念、组成、模式、运行和状态,以及如何使用系统调用创建和管理进程。
29 0
|
9天前
|
边缘计算 人工智能 运维
Linux操作系统:开源力量的崛起与影响###
一场技术革命的回顾 回溯至1991年,当Linus Torvalds宣布Linux操作系统的诞生时,世界或许并未意识到这一举措将如何深刻地改变技术领域的面貌。本文旨在探讨Linux操作系统的发展历程、核心特性、以及它如何引领了一场开源运动,重塑了软件行业的生态。从最初的个人爱好项目成长为全球最广泛采用的服务器操作系统之一,Linux的故事是技术创新与社区精神共同推动下的辉煌篇章。 ###
|
7天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
16天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
152 2
|
27天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
223 3
|
29天前
|
存储 安全 Unix
2024 年 16 个适用于 Linux 的开源云存储软件 (下)
2024 年 16 个适用于 Linux 的开源云存储软件 (下)
35 0
2024 年 16 个适用于 Linux 的开源云存储软件 (下)
|
1月前
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
24 0
Linux C/C++之线程基础