编译GSLSDevil的全过程
GLSLDevil是调试OpenGL程序的工具。
GLSLDevil的新版本已经改名为GLSL-Debugger, github的地址在这里:http://glsl-debugger.github.io/
从github下载zip文件,解压缩, 目录结构如下:

然后按照github上的build步骤来编译。我的编译环境是Windows7, Visual Studio2013.

详细的build过程如下:
- 首先在解压的文件夹的同级目录常见一个空文件夹,名字为build. 
- 安装winflexbison,下载地址如下:
https://sourceforge.net/projects/winflexbison/
下载zip文件后解压缩,文件夹的结构如下:

里面并没有安装文件,所以需要在下面的步骤中的CMAKE文件中进行一些设置。
- 下载GLEW:从这个网址下载zip文件:http://glew.sourceforge.net/ 解压后的目录结构如下:  将这个文件夹拷贝到GLSL-Debugger\GLSLCompiler目录下:  由于这个路径的结构有点问题,所以需要将glew-2.0.0\lib\Release\Win32中的glew32.lib拷贝到lib目录下。  注意要从WIN32目录下拷贝,而不是X64目录下拷贝,否则后面Visual studio编译的时候会出现找不到方法的错误,原因应该是WIN32的lib和X64的lib中定义的方法不一样。 
- 更改CMakeList.txt来指定BISON和GLEW的路径。- GLSL-Debugger\GLSLCompiler\glslang\MachineIndependent\CMakeList.txt在 find_package(BISON 2.7 REQUIRED) find_package(FLEX REQUIRED) 的前面加: list(APPEND CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/GLSLCompiler/win_flex_bison-latest")  这一步的目的是将win_flex_bison的文件夹加到CMAKE的前缀路径中,这样CMAKE在执行的时候能够在这个文件夹中搜索到flex和bison的相关文件。 
- GLSL-Debugger\glsldb\CMakeList.txt:在 find_package(GLEW REQUIRED) 的前面加: list(APPEND CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/GLSLCompiler/glew-2.0.0")  (如果第3步中没有将 glew32.lib拷贝到lib目录下,这里需要设置lib的路径才可以)  
 
- 安装QT4.X我安装的是 QT4.8.6, 在这里下载的: https://download.qt.io/archive/qt/4.8/4.8.6/  下载后一步步点击安装即可。 
- 下载mhook。 GLSL-Debugger文件夹下已经有了一个空的文件夹,需要通过git或者svn下载到这个文件夹。下载网址为:https://github.com/SirAnthony/mhook 
- 官网上说要下载freeglut. 我下载下来了,(下载地址: http://www.transmissionzero.co.uk/software/freeglut-devel/ ),解压后文件夹结构如下: 好像实际并没有用,忘了。好像是因为我配置了glew就不用这个了。 
- 然后按照GLSL-Debugger网站上的步骤执行如下操作- 用管理员身份打开Developer Command Prompt for VS2013.
- Cd到build目录。
- 执行 cmake ../GLSL-Debugger。
 上述步骤完成后,会在build文件夹下面产生一个Visual studio的解决方案,名字为glsldb.sln. 
- 用管理员身份打开解决glsldb.sln.然后点击Rebuild solution, 就会在build\bin\Debug中出现一些可执行文件,其中的glsldb.exe就是我们需要的GLSL Debugger的程序。 当然,在编译的时候可能遇到问题。我当时遇到了如下的问题: - Glsldb 项目编译报错,提示方法没有声明,手动指定了glew32.lib的路径后解决。 (重要:这里需要注意的是,如果要改, Debug和Release的配置都要改,改了Debug, Release的配置不会自动改。这样编译出来的应用程序可能会有问题。) 
- 编译后打开glsldb.exe, 会提示QTGLSLT4.dll找不到,将QT的路径加到环境变量里就解决了。 
- 提示找不到glew32.exe, 将glew的bin目录加到环境变量里就解决了。 
 
- 所有问题都解决后,打开build\bin\Debug文件夹 点击glsldb.exe.  大功告成! (如果Debug配置下编译出来的程序用起来有问题,可以试试用Release配置再编译一下,用Release版本的程序,可能会好用了。) 
编译GSLSDevil的全过程的更多相关文章
- Windows编译运行webrtc全过程
		年纪大了,不想写什么开头.摘要,咱直接开始吧. 不过首先还是要感谢声网提供的webrtc国内源码镜像. 首先,编译webrtc你需要一台win10,而且必须得是一直在更新版本的.因为编译过程需要用到c ... 
- Ubuntu 15.04 编译UE4 for Linux版
		源 起 Unreal Engine 4 是全球最先进的Realtime Illumination & Physical 引擎: 长期以来,UE4都只有Windows版和Mac版,今年终于向Li ... 
- CyanogenMod编译
		1. 介绍 本文介绍了i9100手机CyanogenMod 13系统的编译方法 2. 系统要求 笔者使用的环境为CentOS-7-x86_64, 用来为i9100编译CM 13,之所以选择最新版的CM ... 
- 当CanTK遇到PhoneGap
		有朋友问能不能在CanTK和AppBuilder开发的APP里发送UDP数据,HTML5里只能用HTTPS/HTTP/WebSocket几种通讯方式,要使用UDP需要通过phonegap打包成APK等 ... 
- Windows下使用Visual Studio 2010编译ffmpeg全过程
		在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ... 
- CentOS7下用jdk1.7编译hadoop-2.7.1全过程详解
		说实话,本人编译hadoop的过程比较曲折,但收获也很多,下面系统介绍一下CentOS7下编译hadoop-2.7.1的全过程吧. 先说明,32位Linux操作系统可以直接下载编译好的hadoop使用 ... 
- 【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程
		原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一 ... 
- Linux 下编译并安装配置 Qt 4.53全过程
		最近准备做 Nokia 的 Symbian,Maemo 下触摸屏开发.考虑到程序的跨平台可移植性,最终选择使用 Qt 开发.相对来说,国内关于 Qt 相关文档并不算很多.作者将 Linux 下编译并安 ... 
- 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视GCC编译全过程 | 百篇博客分析OpenHarmony源码| v57.01
		百篇博客系列篇.本篇为: v57.xx 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ... 
随机推荐
- RabbitMQ高级指南:从配置、使用到高可用集群搭建
			本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ... 
- socket listen参数中的backlog
			服务器监听时,在每次处理一个客户端的连接时是需要一定时间的,这个时间非常的短(也许只有1ms 或者还不到),但这个时间还是存在的.而这个backlog 存在的意义就是:在这段时间里面除了第一个连接请求 ... 
- ios  nil、NULL和NSNull 的使用
			nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的met ... 
- java项目实现流水号自动增长
			项目中有一个规则编号字段,从1开始,编号长度为5位,那么第一条数据编号就是00001. 实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储: 业务获取新的编码,考虑并发问题,获取编 ... 
- 在websocket中怎么样注入service类
			最近项目中用到了websocket,遇到很多问题,其中一个是@ServerEndpoint修饰的类无法注入其他的bean,注入的对象都是null,在网上找了好多资料,无意中发现一个朋友的答案给了思路. ... 
- Android热修复技术总结
			https://blog.csdn.net/xiangzhihong8/article/details/77718004 插件化和热修复技术是Android开发中比较高级的知识点,是中级开发人员通向高 ... 
- Java命令学习系列(六)——jinfo
			jinfo可以输出java进程.core文件或远程debug服务器的配置信息.这些配置信息包括JAVA系统参数及命令行参数,如果进程运行在64位虚拟机上,需要指明-J-d64参数,如:jinfo -J ... 
- [转]nginx下的url rewrite
			转:http://zhengdl126.iteye.com/blog/698206 if (!-e $request_filename){rewrite "^/index\.html&quo ... 
- @Autowired注解和静态方法 NoClassDefFoundError could not initialize class 静态类
			NoClassDefFoundError could not initialize class 静态类 spring boot 静态类 java.lang.ExceptionInInitializer ... 
- SQLServer中merge函数用法详解
			http://www.jb51.net/article/75302.htm Merge关键字是一个神奇的DML关键字.它在SQL Server 2008被引入,它能将Insert,Update,Del ... 
