SDL游戏开发02-配置开发环境

hortenseapplerot 计算机知识 24 次浏览 没有评论

一般情况下,在任何一个计算机语言中要使用第三方功能时,都需要配置环境,SDL同样如此。

在我一开始学习的时候对环境配置是深恶痛绝的,稍微出错都会影响学习积极性。但不得不承认,环境的配置一般都是第一要务。

一.为什么要进行环境配置?

以c/c++为例,所谓的环境配置就是配置头文件库文件的目录。因为我们在自己的代码中要使用第三方所提供的API(简单地说,API就是各种函数,比如c/c++的<math.h> 的abs函数),所以需要在编译、链接中要能获取到对应的头文件和库文件的位置。头文件中包含的一般是函数的声明、宏、结构体、类等;而库文件中包含的则是编译后的函数实现的集合

c/c++程序从编写到执行一般分为以下几个阶段:

图:预编译 编译 链接 运行

图一

  • 预编译:此过程是宏替换,比如#include就是把对应的头文件包含进来、#ifndef是条件判断。
  • 编   译:对源代码进行编译,此时会判断用到的函数是否有声明。
  • 链   接:把用到的库文件链接到可执行文件中(静态库)。
  • 运   行:如果使用到动态库,那么在执行前会尝试链接动态库,若链接成功再执行。

如果是在IDE下进行开发的话,通常上面几个阶段都是包含在IDE里面的,比如使用Visual Studio(VS)的话,则只需要点击编译、运行按钮即可。标准库一般都是各个操作系统所提供,而第三方库比如SDL则需要自行配置头文件和库文件的目录,以使得在编译、链接阶段可以查找成功。

库文件又分为静态库和动态库,它们之间的区别仅仅在于链接时间的不同。静态库是在链接阶段链接的,并包含在可执行文件中;动态库则是在运行前才尝试链接的,动态库复用性高,而且如果该库文件升级之后,则只需要替换相应的库文件而无需对可执行程序进行编译链接。不过静态库链接后仅仅只有一个文件,也得简洁方便。

那么不同的语言是怎么相互调用的呢?比如java就可以调用c/c++的代码。众所周知的是,android开发使用的java语言,不过android游戏开发同样可以用c++开发。

在这之前,先说一说编译型语言和解释型语言的区别。

1.编译型语言

类似于图1,如果该语言有类似于图一所示的编译过程的话,那么一般情况下为编译型语言。

编译型语言是把代码编译链接后为计算机可直接执行的机器码,比如c/c++就是编译型语言。编译型语言的特点就是运行速度快,但不具有移植性,即windows下的可执行性程序是无法直接在linux内核下执行的。

2.解释型语言

解释型语言也称为脚本语言,其特点就是边翻译边执行。一般情况下,解释型语言都有一个类似于虚拟机的东西,而代码是在虚拟机里运行的,解释型语言的经典就是lua语言。

3.其他类型语言

在目前来说,有的语言并不能简单地分为编译型语言或解释型语言,比如java,java是编译成class字节码文件后,再在虚拟机中执行的。

 

那么java是如何调用c/c++的呢?这就是库文件的优点。前面提到过,库文件是编译后的函数的集合,这也就使得如果可以暴露库文件的接口,理论上在同样的操作系统内,任何一个语言都是可以进行调用的。

二.不同系统下的环境配置

不同操作系统的开发环境配置都是类似的,总结起来就是让代码在编译、链接过程中可以找得到对应的头文件和库文件。

对于一般的开发来说,如果只有一个文件的话,那么一个gcc或者g++命令即可(gcc/g++对源文件进行编译的命令);而如果大于一个文件的话,为了方便管理,这就需要一个项目管理工具,如果是在windows下的话,VS是一个不错的选择;如果是在ubuntu下的话,cmake是个不错的选择。

VS不仅仅是一个项目管理工具。另外,cmake是跨平台的,它是对makefile的封装,cmake生成makefile文件。而所谓的makefile文件就是对于一个项目来说,如何进行编译。

无论是cmake还是makefile,它们都是说明如何进行编译。

1.Windows环境配置

如果是在windows下进行开发的话,那么不得不提的就是VS,不得不承认的是,VS这个IDE确实不错,这里我推荐使用Visual Studio 2017 Community,社区版在注册并登陆账号后是可以免费使用的。当然,使用其他的IDE也是可以的,比如Code Block,无论使用什么样的IDE,环境配置大致都相同,都是确定头文件和库文件的目录。

2.Ubuntu环境配置

ubuntu下的环境配置则相对比较简单,不过如

 

 

今天先到这。。。

内容如有侵犯你的权益,请联系删除

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go