Linux下CMake开发

CMake编译和运行C++文件

  1. 编写CMakeLists.txt
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程
project( pro )# 设置编译模式
set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV库
#指定OpenCV版本,代码如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代码如下
find_package(OpenCV REQUIRED)#添加OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})#显示OpenCV_INCLUDE_DIRS的值
message(${OpenCV_INCLUDE_DIRS})# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( main main.cpp )# 将库文件链接到可执行程序上
target_link_libraries( main  ${OpenCV_LIBS})
  1. 编写C++文件main.cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;int main(){Mat image;image = imread("./1.jpg");if (image.empty()) {cout << "Error! Input image cannot be read...\n";return -1;}cout<<"图像宽为:"<<image.cols<<"\t高度为:"<<image.rows<<"\t通道数为:"<<image.channels()<<endl;return 0;
}
  1. 编译和运行
    一般把CMakeLists.txt文件放在工程目录下,使用时,先创建一个叫build的文件夹(这个并非必须,因为cmake命令指向CMakeLists.txt所在的目录,例如cmake … 表示CMakeLists.txt在当前目录的上一级目录。cmake后会生成很多编译的中间文件以及makefile文件,所以一般建议新建一个新的目录,专门用来编译),然后执行下列操作:
cd build 
cmake ..    生成Makefile
make 

其中cmake … 在build里生成Makefile,make根据生成makefile文件,编译程序,make应当在有Makefile的目录下,根据Makefile生成可执行文件。

  1. 运行,直接./main 运行build文件夹下可执行文件,要保证main代码中需要用到的静态文件也在build文件夹下(与可执行文件在一个目录下)。

安装opengl

Centos:

yum list mesa*
yum install mesa*
yum install freeglut*

若没有c++编译器,需:yum -y install gcc-c++

Ubuntu:

apt-get install build-essential libgl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev

测试文件:
vi test.c

#include <GL/gl.h>
#include <GL/glut.h>
#include <stdlib.h>void init(void)
{glClearColor(0.0, 0.0, 0.0, 0.0);glMatrixMode(GL_PROJECTION);glOrtho(-5,5,-5,5,5,15);glMatrixMode(GL_MODELVIEW);gluLookAt(0,0,10,0,0,0,0,1,0);return;
}
void display(void)
{glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 0, 0);glutWireTeapot(3);glFlush();return;
}int main(int argc, char* argv[])
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);glutInitWindowPosition(0,0);glutInitWindowSize(300, 300);glutCreateWindow("OpenGL 3D View");init();glutDisplayFunc(display);glutMainLoop();return 0;
}

编译:gcc test.c -lglut -lGL -lGLU -o test
运行:./test
执行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/12914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter-断言

断言作用&#xff1a;让脚本自动化执行过程中&#xff0c;能够自动判定执行结果是否正确&#xff0c;需要添加断言 响应断言 添加方式&#xff1a;测试计划–》线程组–》HTTP请求–》(右键添加)断言–》响应断言 案例 请求:https://www.baidu.com 检查&#xff1a;让程序检查…

TortoiseGit安装

1、TortoiseGit简介 TortoiseGit是基于TortoiseSVN的Git版本的Windows Shell界面。它是开源的&#xff0c;可以完全免费使用。 TortoiseGit 支持你执行常规任务&#xff0c;例如commit、显示日志、区分两个版本、创建分支和标签、创建补丁等。 2、TortoiseGit下载 (1)Tortois…

亚马逊云科技联合霞光社发布《2013~2023中国企业全球化发展报告》

中国企业正处于全球聚光灯下。当企业全球化成为时代发展下的必然趋势&#xff0c;出海也从“可选项”变为“必选项”。中国急速扩大的经济规模&#xff0c;不断升级的研发和制造能力&#xff0c;都在推动中国企业不断拓宽在全球各行业的疆域。 过去十年&#xff0c;是中国企业…

API商品详情:详尽呈现产品信息的利器

API商品详情&#xff1a;详尽呈现产品信息的利器 随着电子商务的迅速发展&#xff0c;越来越多的企业和开发者开始关注和利用API来实现灵活、高效的商品展示和推广。而在这一领域中&#xff0c;API商品详情成为了无可替代的利器&#xff0c;为用户提供了极为详尽的产品信息。 …

centos7安装git

方式一: 输入命令安装 直接使用命令即可 下载的可能是旧版 yum install -y git验证是否安装成功 git --version方式二&#xff1a;解压包安装 获取要下载的版本安装包 然后上传至服务器 如果安装了旧版可以使用 卸载 yum remove git 创建 文件夹 mkdir -p /usr/local/git…

springboot 自定义注解 ,aop切面@Around; 为接口实现日志插入【强行喂饭版】

前言&#xff1a;有个开发共享api的需求&#xff0c;需要把调用的api插入到接口调用日志里面。 但代码重复工作量大的时候&#xff0c;现在总不能还跟之前一样那里需要写哪里吧。 所以想到了用自定义注解 &#xff0c;aop切面的方式拦截处理。 思路&#xff1a;aop切面使用Arou…

怎么在线制作证件?教你一键生成证件照

无论是申请身份证、护照、驾照还是学生证&#xff0c;都需要一张清晰、规范的证件照。但是&#xff0c;为了拍摄一张完美的证件照&#xff0c;需要付出不少时间和精力。而现在&#xff0c;我们可以使用压缩图网站提供的证件照制作工具&#xff0c;轻松制作出一张清晰、规范的证…

神经网络的初始化方法

文章目录 1、随机初始化2、Xavier初始化3、He初始化4、权重预训练初始化5、零初始化 对于神经网络的训练过程中&#xff0c;合适的参数初始化方法有助于更好的处理梯度消失和梯度爆炸问题。通常有以下几种初始化方法&#xff1a; 1、随机初始化 随机初始化&#xff08;Random…

飞行动力学-第15节-part2-松杆中性点 之 基础点摘要

飞行动力学-第15节-part2-松杆中性点 之 基础点摘要 1. 松杆中性点2. 松浮角2. 杆力梯度3. 参考资料 1. 松杆中性点 stick fixed&#xff1a; N 0 N_0 N0​&#xff0c;握杆&#xff0c;升降舵固定stick free&#xff1a; N 0 ′ N_0 N0′​&#xff0c;松杆&#xff0c;升降舵…

java static修饰的静态成员

静态成员 特点&#xff1a; 1.静态成员可以被本类所有对象共享2.静态成员可以通过类名调用也可以推荐对象调用&#xff0c;但是推荐使用类名调用&#xff01;3.静态成员随着类的加载而加载&#xff0c;优先于对象存在的静态方法的注意事项&#xff1a; 1.非静态方法可以访问任…

APP开发入门:了解主流的编程语言

在过去的几年里&#xff0c;有许多程序员开始学习和使用编程语言。这其中包括C、C、 Java和 Python。尽管有许多语言可供选择&#xff0c;但大多数程序员都会选择最容易学习的编程语言。 如今&#xff0c;有很多编程语言供选择。程序员们在学习这些语言时可以自由地选择他们喜…

【CSS】outline 属性

outline属性 outline 是 CSS 属性&#xff0c;用于设置元素的外边框样式&#xff0c;包括颜色、样式和宽度。外边框是一个在元素周围的轮廓&#xff0c;类似于边框&#xff08;border&#xff09;&#xff0c;但不会占用空间&#xff0c;并且不会影响布局。 outline 属性可以…

Docker 镜像构建 搭建分布式LNMP论坛 实践

地址规划 nginx 172.18.0.10 mysql 172.18.0.20 php 172.18.0.30 宿主机准备 拉取镜像&#xff0c;下面以此镜像为基础 docker pull centos:7 创建自定义网段以便指定 IP 不变动 docker network create --subnet172.18.0.0/16 --opt "com.docker.network.bridge.na…

Spark Streaming流媒体引擎

Spark Streaming是Spark的上一代流媒体引擎。Spark Streaming不再有更新&#xff0c;它是一个遗留项目。Spark中有一个更新且更易于使用的流媒体引擎&#xff0c;称为结构化流媒体 概述 Spark Streaming是核心Spark API的扩展&#xff0c;支持实时数据流的可扩展、高吞吐量、…

条款38:对变化多端的线程句柄析构函数行为保持关注

条款37解释过&#xff0c;可联结的线程对应着一个底层系统执行线程&#xff0c;未推迟任务&#xff08;参见条款36&#xff09;的期值和系统线程有类似关系。这么一来&#xff0c;std::thread型别对象和期值对象都可以视作系统线程的句柄。 从这个视角来看&#xff0c;std::th…

Opencv的Mat内容学习

来源&#xff1a;Opencv的Mat内容小记 - 知乎 (zhihu.com) 1.Mat是一种图像容器&#xff0c;是二维向量。 灰度图的Mat一般存放<uchar>类型 RGB彩色图像一般存放<Vec3b>类型。 (1)单通道灰度图数据存放样式&#xff1a; (2)RGB三通道彩色图存放形式不同&#x…

Flutter 添加 example流程

一、已有Flutter工程&#xff08;命令&#xff09;添加 example 1、cd 工程(flutter_plugin ,是自己创建的)根目录 例: flutter create example 执行命令创建example PS&#xff1a;cd example 后执行flutter doctor 后就可以看到效果 2、如果需要指定iOS/Android 语言,请添加…

动态数组 Vector(难度1)(答案)

答案如下: #include<iostream> #include <iomanip> #include <cassert> using namespace std;//------下面的代码是用来测试你的代码有没有问题的辅助代码,你无需关注------ #include <algorithm> #include <cstdlib> #include <iostream&…

9SX UPS串口SHUT通讯协议

9SX UPS通讯协议 SHUT通讯协议串口定义同步SHUT数据帧UPS CommandsGET REPORT command SHUT通讯实例 在改造中碰到了某公司的9SX UPS串口通讯。原来的控制器采用了C语言编程。因为不想费事&#xff0c;向原厂家询问通讯协议。前台的小姐很骄傲的说他们不提供通讯协议了&#xf…

如何建立Docker私有仓库?

文章目录 docker私有仓库harborHarbor仓库部署Harbor仓库使用 docker私有仓库 Docker 私有仓库是一个用于存储和管理 Docker 镜像的私有存储库。它允许你在内部网络中创建和管理 Docker 镜像&#xff0c;并提供了更好的安全性和控制&#xff0c;因为你可以完全控制谁能够访问和…