1、CMake

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

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

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

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

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

2、makefile

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

cmake和makefile的关系如下:

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

(1)编写源文件

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
//DisplayImage.cpp
int main(int argc, char** argv )
{
if ( argc != )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -;
}
Mat image;
image = imread( argv[], );
if ( !image.data )
{
printf("No image data \n");
return -;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey();
return ;
}

(2)编写CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

(3)编译

cmake .
make

(4)执行

./DisplayImage lena.jpg

(5)结果

最新文章

  1. Rhel6-cacti+nagios+ganglia(nginx)配置文档
  2. SharePoint report site.
  3. RedHat7 部署ELK日志分析系统
  4. BeanUtils在web项目中的应用
  5. HTML 详细介绍
  6. chrome浏览器强制采用https加密链接
  7. Xamarin自定义布局系列——PivotPage,多页面切换控件
  8. 201521123103 《Java程序设计》第三周学习总结
  9. vs调试dll工程
  10. java.io.UTFDataFormatException: encoded string too long:
  11. [JAVA]JAVA章3 如何获取及查看DUMP文件
  12. Python 简单的文件上传功能
  13. Arduino IDE for ESP8266 (4)局域网 网页图形化控制灯 路由系统
  14. Mac通过安装Go2Shell实现“在当前目录打开iTerm2”
  15. WebLogic调用WebService提示Failed to localize、Failed to create WsdlDefinitionFeature
  16. CSS3关于-webkit-tap-highlight-color属性
  17. [整理]html5 WebApp 01
  18. 使用Java语言开发微信公众平台(八)——自定义菜单功能
  19. [转载]Error starting Sun&#39;s native2ascii:
  20. 开源网络抓包与分析框架学习-Packetbeat篇

热门文章

  1. 1.探索性数据分析(EDA,Exploratory Data Analysis)
  2. 第五篇 -- Xml序列化
  3. 最近走过的坑 :slf4j 多个实现 hibernate 类型转换异常 bean依赖问题
  4. Gradle 学习资料
  5. mysql,本地连接看到的数据库不全,远程连接看到的数据库是完整的
  6. linux下使用openssl生成https的crt和key证书
  7. Maven整合SSH框架的所有依赖和插件(记录下来,省的以后再写)
  8. [Algorithm] 122. Best Time to Buy and Sell Stock II
  9. match 和 search 和 indexOf 查找及 正则表达式的 exec 和 test 用法
  10. 51 Nod 1135 原根