1、CMake

定义:CMake是一个跨平台编译工具,可以用来自动输出makefile文件;

用法:(1)想要自动生成makefile,还需要编写对应的CMakeLists.txt文件;

   (2)在CMakeLists.txt的同级目录下使用"cmake ."命令就能生成对用的makefile文件;

语法解释,以下面这个脚本为例:

  1. cmake_minimum_required(VERSION 2.8) //cmake最低要求版本2.8以上
  2. project( DisplayImage ) //project不是强制性的,最好加上,这会引入两个变量:DISPLAYIMAGE_BINARY_DIR和DISPLAYIMAGE_SOURCE_DIR
  3. find_package( OpenCV REQUIRED ) //寻找库文件
  4. add_executable( DisplayImage DisplayImage.cpp ) //生成可执行文件
  5. target_link_libraries( DisplayImage ${OpenCV_LIBS} ) //可执行文件和库之间建立链接

2、makefile

定义:makefile是一个文件,它定义了一系列的规则来指定,哪些文件需要先编译,哪些后编译,哪些需要重新编译,甚至于进行更复杂的功能操作;

cmake和makefile的关系如下:

第一个例子:编译一个opencv小程序

(1)编写源文件

  1. #include <stdio.h>
  2. #include <opencv2/opencv.hpp>
  3. using namespace cv;
  4. //DisplayImage.cpp
  5. int main(int argc, char** argv )
  6. {
  7. if ( argc != )
  8. {
  9. printf("usage: DisplayImage.out <Image_Path>\n");
  10. return -;
  11. }
  12. Mat image;
  13. image = imread( argv[], );
  14. if ( !image.data )
  15. {
  16. printf("No image data \n");
  17. return -;
  18. }
  19. namedWindow("Display Image", WINDOW_AUTOSIZE );
  20. imshow("Display Image", image);
  21. waitKey();
  22. return ;
  23. }

(2)编写CMakeLists.txt文件

  1. cmake_minimum_required(VERSION 2.8)
  2. project( DisplayImage )
  3. find_package( OpenCV REQUIRED )
  4. add_executable( DisplayImage DisplayImage.cpp )
  5. target_link_libraries( DisplayImage ${OpenCV_LIBS} )

(3)编译

  1. cmake .
  2. make

(4)执行

  1. ./DisplayImage lena.jpg

(5)结果

ubuntu下编译C++程序的更多相关文章

  1. ubuntu下编译java程序

    ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...

  2. [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302'或者'\240' in program”的解决方案

    参考文献:[error: stray ‘\240’ in program或 error: stray ‘\302’ in program](http://blog.csdn.net/u01299585 ...

  3. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  4. [置顶] ubuntu12.04下编译opencv程序

    ubuntu12.04下编译opencv程序 1.在ubuntu下安装好 opencv后(建议使用apt-get install 来安装) 2.使用程序FaceExaple.c来进行测试程序 #inc ...

  5. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  6. Ubuntu系统---编译opencv程序的几种方式g++、Makefile、Cmake

    Ubuntu系统---编译opencv程序的几种方式g++.Makefile.Cmake 先建立一个工程(一个文件夹),写好xxx.cpp文件,可以是多个: //----------opencv.cp ...

  7. ubuntu下编译caffe

    Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...

  8. 在Ubuntu下编译wpa_supplicant

    最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位. 一.编译需要用到三个库源码包,分别是 ...

  9. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

随机推荐

  1. git命令中的--是什么意思?

    转载自git命令中的--是什么意思? git命令中的--是什么意思? 看到个命令 git checkout -- files 不知道--代表什么.查了一下,--是linux的东西,用来标志命令项的结束 ...

  2. php的类使用样例

    这个demo.差不多php的类的主要知识点都用到了. public,private关键字, namespace,use命令空间, require导入, interface复用, abstract抽象类 ...

  3. Educational Codeforces Round 67 D. Subarray Sorting

    Educational Codeforces Round 67 D. Subarray Sorting 传送门 题意: 给出两个数组\(a,b\),现在可以对\(a\)数组进行任意次排序,问最后能否得 ...

  4. Locust性能测试7-分布式执行

    前言 使用Locust进行性能测试时,当一台单机不足以模拟所需的用户数量的时候,可以在多台机器上分布式的执行性能测试. locust分布式启动场景有2种,一种是单机设置master和slave模式,另 ...

  5. springboot ResponseEntity<byte[]> 下载文件 byte 都变成base64

    因为spring boot消息转换器 ,全部将数据转换为json格式,包括文件的byte数据 关于spring boot 的消息转换器见:https://www.jianshu.com/p/ffe56 ...

  6. Entity 类中加了@Id 注解后仍然出现org.hibernate.AnnotationException: No identifier specified for entity 错误

    查看网上的资料,应该是报错的实体类com.example.domain.p.User中没有添加加主键的注解@Id,这个是必须的.但是我的实体类中明明已经添加了@Id,为什么还会报这个错误呢? 后来检查 ...

  7. Maven整合SSH框架的所有依赖和插件(记录下来,省的以后再写)

    JDK:1.8 Tomcat:7 Maven:3.6.1 调了一个小时,终于没错误了,总结了一个规律,如果在用Tomcat插件启动项目时报错,显示如:org.apache.tomcat.util.bc ...

  8. 68-Flutter中极光推送的使用

    1.申请极光账号和建立应用 极光推送的官方网址为:https://www.jiguang.cn/ 注册好后,进入'服务中心',然后再进入'开发者平台',点击创建应用. 这时候会出现新页面,让你填写“应 ...

  9. score indicator

    The strongest scorer applet is the strongest scorer specially designed for the players. No longer wo ...

  10. luogu_1168: 中位数

    洛谷1168:中位数(对顶堆) 题目描述: 给定一个长度为\(N\)的非负整数序列\(A_i\),对于所有\((1\leq k\leq\frac{N+1}{2})\),输出\(A_1,A_3,..., ...