Linux下OpenGL的安装与cmake编译OpenGL程序

OpenGL安装

安装命令如下:

$ sudo apt install build-essential

$ sudo apt install libgl1-mesa-dev

$ sudo apt install libglu1-mesa-dev

$ sudo apt install freeglut3 freeglut3-dev

cmake编译OpenGL程序

project

├── MeshLib

│ └── core

│ └── bmp

│ └── RgbImage.cpp

├── MyDemo

│ ├── main.cpp

│ ├── CMakeLists.txt

│ └── build

其他头文件的路径直接在.cpp里体现出来,如:

在main.cpp中:

#include

#include"../MeshLib/core/viewer/Arcball.h"

#include"../MeshLib/core/bmp/RgbImage.h"

#include"../MeshLib/core/Geometry/quat.h"

否则,如果直接写 #include “Arcball.h” 之类的,就需要在CMakeLists.txt中包含所有头文件路径(如glut.h就需要指定路径 OpenGL_INCLUDE_DIR)

若使用freeglut的话

MyDemo/CMakeLists.txt

cmake_minimum_required(VERSION 2.6)

add_compile_options(-std=c++11)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/build/CMakeModules/")

project(MyDemo)

find_package(OpenGL REQUIRED)

include_directories(${OpenGL_INCLUDE_DIR})

find_package(FREEGLUT REQUIRED)

include_directories(${FREEGLUT_INCLUDE_DIR})

add_executable(${PROJECT_NAME} ${PROJECT_BINARY_DIR}/../../MeshLib/core/bmp/RgbImage.cpp main.cpp )

target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBRARY} ${FREEGLUT_LIBRARY} ${OPENGL_LIBRARY})

但是光这样还是没办法的,因为找不到freeglut库,这时候需要再写一个搜索package frerglut的CMakeLitsts.txt

在build目录下mkdir一个CMakeModules, 新建一个文件名FindFREEGLUT.cmake的文件,编辑内容如下(为什么是在build目录下新建而不是在MyDemo目录下?因为我们是进入build中,执行命令”cmake ..“的)

# Try to find the FREEGLUT library

#

# FREEGLUT_INCLUDE_DIR

# FREEGLUT_LIBRARY

# FREEGLUT_FOUND

FIND_PATH(

FREEGLUT_INCLUDE_DIR GL/freeglut.h GL/gl.h GL/glu.h GL/glew.h

${CMAKE_INCLUDE_PATH}

$ENV{include}

${OPENGL_INCLUDE_DIR}

/usr/include

/usr/local/include

)

SET(STORE_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})

SET(CMAKE_FIND_FRAMEWORK NEVER)

FIND_LIBRARY(

FREEGLUT_LIBRARY

NAMES freeglut_static freeglut glut GL

PATH

/opt/local/lib

${CMAKE_LIBRARY_PATH}

$ENV{lib}

/usr/lib

/usr/local/lib

)

SET(CMAKE_FIND_FRAMEWORK ${STORE_CMAKE_FIND_FRAMEWORK})

IF (FREEGLUT_INCLUDE_DIR AND FREEGLUT_LIBRARY)

SET(FREEGLUT_FOUND TRUE)

ENDIF (FREEGLUT_INCLUDE_DIR AND FREEGLUT_LIBRARY)

IF (FREEGLUT_FOUND)

IF (NOT FREEGLUT_FIND_QUIETLY)

MESSAGE(STATUS "Found FREEGLUT: ${FREEGLUT_LIBRARY}")

ENDIF (NOT FREEGLUT_FIND_QUIETLY)

ELSE (FREEGLUT_FOUND)

IF (FREEGLUT_FIND_REQUIRED)

MESSAGE(FATAL_ERROR "Could not find FREEGLUT")

ENDIF (FREEGLUT_FIND_REQUIRED)

ENDIF (FREEGLUT_FOUND)

若使用glut的话

则则比较简单:

cmake_minimum_required (VERSION 2.6)

project(OpenGL)

find_package(OpenGL REQUIRED)

include_directories(${OPENGL_INCLUDE_DIR})

find_package(GLUT REQUIRED)

include_directories(${GLUT_INCLUDE_DIR})

set(CMAKE_CXX_FLAGS "-g -Wall")

add_executable(OpenGL Main.cpp)

target_link_libraries(OpenGL ${GLUT_LIBRARY} ${OPENGL_LIBRARY})

可能出现的错误

if you use `-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated

解决方法 add_compile_options(-fpermissive -std=c++11)

undefined reference to symbol …

这类错误通常是链接.so, .a文件失败产生的,但是都会给出具体是哪个lib没有:”/lib/x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line”

解决方法,

1.用各种方法把libz.so放到指定目录下(方法太多了自行查询)

2.若目录下已有libz.so,则在target_link_libraries中加上该libz.so( ${PROJECT_SOURCE_DIR}//libz.so)

linux opengl安装教程,Linux下OpenGL的安装与cmake编译OpenGL程序相关推荐

  1. python3.7.4安装教程win7_Window10下python3.7 安装与卸载教程图解

    Window10下python3.7 安装与卸载教程图解 1.进入官网https://www.python.org/,点击Downloads下的Windows按钮,进入下载页面. 2.如下图所示,点击 ...

  2. linux mysql使用教程_Linux 下MySQL的安装及基本使用

    1.MySQL安装(使用yum进行安装) yum install mysql* –y Linux MySQL数据默认存放在 /var/lib/mysql/ [root@study ~]# cd /va ...

  3. mysql8.0 linux 安装教程_linux下mysql8.0安装详细教程

    1.下载官方安装包  https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz wge ...

  4. centos得mysql安装教程_Centos下MySQL的安装及配置教程

    本文作者以初学者身份,和读者一起学习,最终达到通过阅读此文后,能灵活运用linux下mysql.环境Centos6.3 卸载掉原有mysql并安装和设置新mysql 因为mysql数据库在Linux上 ...

  5. Win7matlab7.0安装教程,Win7下MATLAB7.0安装教程

    Win7下MATLAB 7.0下载地址和详细安装视频链接 http://www.doczj.com/doc/0c00480389eb172ded63b7ea.html/programs/view/3Q ...

  6. mysql5.7安装教程centos_CentOS7下MySQL5.7安装配置方法图文教程(YUM)

    安装环境:CentOS7 64位,MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ # ...

  7. linux opengl配置编译,Linux下OpenGL的安装与cmake编译OpenGL程序

    Linux下OpenGL的安装与cmake编译OpenGL程序 OpenGL安装 安装命令如下: $ sudo apt install build-essential $ sudo apt insta ...

  8. seafile服务器版能安装在虚拟机上,seafile安装教程linux

    seafile安装教程linux [2021-02-15 06:48:59]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&quo ...

  9. Linux、Windows、Mac下Docker的安装与使用

    Linux.Windows.Mac下Docker的安装与使用 一.Linux下的安装 二.Windows与Mac下的安装 三.Docker的使用 一.Linux下的安装 这里以Centos 7为例,首 ...

  10. mysql5.6.33安装教程_Linux下mysql5.6.33安装配置教程

    本教程为大家分享了mysql5.6.33在linux下的安装配置方法,供大家参考,具体内容如下 1.下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.h ...

最新文章

  1. NeurIPS 2020 | 微软亚洲研究院论文摘录之强化学习GAN篇
  2. 小心内存也会引起蓝屏
  3. docker omv 防火墙_我的软路由折腾之旅 篇三:在openmediavault上通过Docker实现OPENWRT旁路由功能...
  4. Spring获取属性配置
  5. Angular应用里使用HTTP服务的一个具体例子
  6. mysql主从复制超简单,mysql简单主从复制
  7. java一致性hash api_一致性哈希算法学习及JAVA代码实现分析
  8. Zabbix部署(一)
  9. 麻省理工学院推出数据美国大数据可视化工具
  10. MFC通过sql访问excel的方法
  11. 大一java题库及答案_2016最新java考试题库及答案
  12. 10道经典java面试题_实习生必问(java基础)
  13. 达索系统携百世慧科技亮相第二届四川装备智造国际博览会
  14. qq飞车手游忘记哪个区了服务器也没显示,qq飞车手游怎么找回以前玩的区 | 手游网游页游攻略大全...
  15. 基于图像的场景三维建模
  16. 2021毓英中学高考成绩查询入口,2021年泉州各高中高考成绩排名及放榜最新消息...
  17. 如何解读肠道菌群检测报告中维生素指标
  18. php做后端的优势,【后端开发】php和java的优势
  19. Elastic App Search:免费的产品,可提供出色的搜索体验
  20. 瓦片地图面面观之缩放级别

热门文章

  1. (21)tar打包命令详解
  2. 杨辉三角形Java实现
  3. limbo镜像linux下载,Limbowin10镜像下载|Limbo模拟器win10镜像 可上网版下载_最火手机站...
  4. CentOS操作系统防火墙添加端口
  5. 超微服务器主板型号,Supermicro超微主板X10SRL-FLGA-2011,单路入门级服务器主板
  6. Java实现基础坦克大战【含源码】
  7. 读取xlsx,根据模板图片批量添加文字生成相关图片,如证书,奖状,名片等
  8. 6*6数独,要求输出结果
  9. IMSIDesign.TurboCAD.Designer.v14
  10. c语言怎么把字符串转数组,【转】C语言 字符数组与字符串