ubuntu下编译C++程序
2024-08-30 11:14:24
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)结果
最新文章
- Rhel6-cacti+nagios+ganglia(nginx)配置文档
- SharePoint report site.
- RedHat7 部署ELK日志分析系统
- BeanUtils在web项目中的应用
- HTML 详细介绍
- chrome浏览器强制采用https加密链接
- Xamarin自定义布局系列——PivotPage,多页面切换控件
- 201521123103 《Java程序设计》第三周学习总结
- vs调试dll工程
- java.io.UTFDataFormatException: encoded string too long:
- [JAVA]JAVA章3 如何获取及查看DUMP文件
- Python 简单的文件上传功能
- Arduino IDE for ESP8266 (4)局域网 网页图形化控制灯 路由系统
- Mac通过安装Go2Shell实现“在当前目录打开iTerm2”
- WebLogic调用WebService提示Failed to localize、Failed to create WsdlDefinitionFeature
- CSS3关于-webkit-tap-highlight-color属性
- [整理]html5 WebApp 01
- 使用Java语言开发微信公众平台(八)——自定义菜单功能
- [转载]Error starting Sun&#39;s native2ascii:
- 开源网络抓包与分析框架学习-Packetbeat篇
热门文章
- 1.探索性数据分析(EDA,Exploratory Data Analysis)
- 第五篇 -- Xml序列化
- 最近走过的坑 :slf4j 多个实现 hibernate 类型转换异常 bean依赖问题
- Gradle 学习资料
- mysql,本地连接看到的数据库不全,远程连接看到的数据库是完整的
- linux下使用openssl生成https的crt和key证书
- Maven整合SSH框架的所有依赖和插件(记录下来,省的以后再写)
- [Algorithm] 122. Best Time to Buy and Sell Stock II
- match 和 search 和 indexOf 查找及 正则表达式的 exec 和 test 用法
- 51 Nod 1135 原根