首页 > 系统相关 >Linux下使用EasyX库

Linux下使用EasyX库

时间:2023-02-13 17:14:43浏览次数:61  
标签:CMake Linux EasyX MinGW 使用 Test cmake CLion

Linux 下使用 EasyX

一、EasyX 与 CLion 简介

(一)、EasyX

EasyX,全名:“EasyX Graphics Library for C++”。由于其采用静态编译,并不依赖任何 dll,超低的学习成本,深受许多开发者喜欢,在下面列举一些 EasyX 的特点:

  • EasyX 是针对 C++ 的图形库,可以帮助 C/C++ 开发者快速上手图形设计。
  • 由于其简单的操作,在进行一些 C/C++、图形学等课程设计实验时,可以专注在课程知识上,不被绘图部分牵扯太多精力。
  • EasyX 能够在 Visual Studio 上完美使用,为很多开发者节约适配时间。
  • EasyX 在 C/C++ 学习、编写小游戏、图形学、粒子系统、物理模拟等多种场景下均有运用。「EasyX 作品

EasyX 具有如此多的优点,但是在早期仅支持 MVSC 编译器。对于使用 GNU/Linux 发行版的开发的开发者来说造成很多的困扰。终于,在 2022 年 6 月 10 号,EasyX 提供适配 MinGW 的 库文件,从这开始 EasyX 正式支持使用 minGW 编译器,这就为使用 GNU/Linux 开发的开发者提供切入点!

(二)、CLion

CLion 是由 JetBrains 出品的专门为开发 C 以及 C++ 所设计的跨平台集成开发环境(IDE)。其以 IntelliJ 为基础设计,包含许多智能功能来提高开发者的生产力。同时其强大的跨平台能力使之 CLion 能够在 Linux、OS X 和 Windows 上开发 C 和 C++。

注意:在这里笔者仅仅以 CLion 为 IDE 开发环境开发 EasyX,但同时在 VScode 上也能成功开发 EasyX。其根本是 EasyX 支持使用 MinGW 编译器,与所使用的 C/C++ 开发环境无关。

那么接下来就开始学习如何通过 MinGW 与 CLion 使用 EasyX 吧!


二、Linux 下的 MinGW

(一)、安装 MinGW

假如所使用的 GNU/Linux 发行版为 Debian 系,及 Debian、Ubuntu 等,则可直接使用一下命令安装 MinGW 编译器。

sudo apt-get update
sudo apt-get install mingw-w64

假如,您使用的是其他 GNU/Linux 发行版,则可以参考 MinGW 官网「MinGW

(二)、使用 MinGW-W64 编译器

MinGW,即 “Minimalist GNU for Windows”。意为适用于 Windows 的极简主义 GNU。
它是一个可自由使用和自由发布的 Windows 特定头文件和使用 GNU 工具集导入库的集合,允许在 GNU/Linux 和 Windows 平台生成本地的 Windows 程序而不需要第三方 C 运行时(C Runtime)库。[1]
简单来说:它实际上是将经典的开源 C 语言编译器 GCC 通过添加 Windows 独有的头文件、Win32 API 等其他集合,从而移植到 Windows 上。使之在 Windows 上也可以使用 GCC。
在这里,我们使用 MinGW-w64 编译器,区别于过去的只能编译 32 位可执行文件的 MinGW。MinGW-w64 既可编译 32 位可执行文件也可编译 64 位可执行文件。[2] 现如今使用的 MinGW 已经被 MinGW-w64 所取代, 所以在下面笔者所述的 MinGW 皆为 MinGW-w64。

MinGW 特点

  • MinGW-w64 位开源软件 [3]
  • MinGW-w64 拥有一个活跃的开源社区。
  • 支持 C、C++、Ada, Obj-C, Obj-C++, OCaml 在内的一系列语言。
  • MinGW-w64 直接使用 Windows 的 C 语言运行库,编译下的可执行程序可以直接在 Windows 下运行。
  • 许多 IDE 都支持 MinGW-w64,比如 Dev-Cpp、CLion、Code::Blocks、CFree 等。

那么在上一步我们已经成功安装了 MinGW,该如何去使用它呢?

1、CLion 构建工作链

CLion 工具链简介:
对于 CLion 中的 CMake 项目,工具链是构建和运行应用程序所需的所有必要工具的集合:工作环境,CMake 可执行文件,make 和编译器以及调试器。
您始终可以为一个项目拥有多个工具链,并在需要时在它们之间轻松切换。
当您开始使用 CLion 时,您已经有了默认的工具链。尽管可以在开发中使用它,但您可能还需要根据项目需要调整工具集(例如,更改工作环境或切换到其他编译器)。[4]

首先,我们需要去 /usr/bin 目录下寻找一下两个程序:

  • x86_64-w64-mingw32-gcc
  • x86_64-w64-mingw32-g++

如果成功找到,那么接下来笔者将通过在 CLion 上设置 MinGW 工具链的方式在 CLion 上使用 MinGW。

如图:

img

图 1

解释:
1、首先点击 “+” 创建新的工具链
2、将工具链名设置为 “mingw”
3、设置 C/C++ 编译器,如图所示。
注意:
在 CLion 中已经自带有构建工具 ninja、CMake 和调试器 GDB。如果读者在其他开发环境使用,如 nvim、VScode 等,需要自行安装。在接下来的使用中会用到上文程序。

2、CMake 构建编译环境

CMake 简介:
CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装 (编译过程)。
他能够输出各种各样的 makefile 或者 project 文件,能测试编译器所支持的 C++ 特性, 类似 UNIX 下的 automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。
这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。[5]

img

图 2

解释:
1、首先如上文步骤一样,点击 “+” 创建新的 CMake
2、修改 CMake 文件名
3、修改工具链,在 Linux 下默认使用 gcc,这里使用在上文构建的工具链。

至此,我们已经在 CLion 上做好的 MinGWd 的基础环境配置。那么开始码代码吧:)


三、CMake 构建开发环境

注意:在接下来所介绍的 CMake 使用皆为依据笔者所使用的 CMakeList 文件内容,简单介绍 CMake 命令。若想要深入理解 CMake,可以阅读「CMake Reference Documentation」,望见谅。

(一)、理解 CMake 基本工作原理

首先,我们在 CLion 新建项目,其基本结构如下:

图 3

解释:
第一项:在 CLion 官方文档下描述为 “在这里指定生成的 CMake 文件所需的位置”。在原生的 CMake 编译下通过 CMakeLists.txt 文件生成 CMakeFile 等一系列文件,CLion 则直接将其汇合为一个文件夹 “Build directory”。注意:这里仅代表 CLion,若在 VScode 下使用则还需更加深入了解 CMake 工作原理。
第二项:为 CMake 配置文件

了解了,基本项目架构,那么我们便开始简单解释 CMake 工作原理吧!

标签:CMake,Linux,EasyX,MinGW,使用,Test,cmake,CLion
From: https://www.cnblogs.com/aaroncoding/p/17116879.html

相关文章

  • consul Linux Docker 安装
    [root@machine136nacos]#dockersearchconsulNAMEDESCRIPTIONSTARSOFFICIAL......
  • 使用精灵组对精灵成员编队 pygame 230213
    定义精灵成员定义了两个精灵成员说明:Background类是精灵类的子类定义精灵组精灵组添加精灵语法:精灵组.add(精灵成员)批量更新数据语法:精灵组.update()说明:目的是让所有的精灵......
  • 使用 PHP 和 Laravel 构建 REST API 的教程
    RepresentationalStateTransfer( ​​REST​​ )是一种用于构建Web服务的流行软件架构样式。RESTAPI允许客户端通过向特定端点或“路由”发出HTTP请求来从服务......
  • Linux最常见的4个截取命令详解!
    在Linux系统中截取命令有很多,但比较常用的截取命令一般包含:cut命令、printf命令、awk命令、sed命令,接下来我们通过这篇文章为大家详细的介绍一下这四个命令。1、cut......
  • Linux-常用基本命令(四)
    常用基本命令搜索查找类find查找文件或者目录find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。1)基本语法find[搜索范围][选项]2)选......
  • ChatGPT 使用教程(含国内相关产品链接)
    ChatGPT链接:https://chat.openai.com/auth/login在使用之前请准备以下材料:相关工具(若没有,可访问以ChatGPT为技术引擎的国内产品,查看附录一)可接收短信的海外手机号(若......
  • C++ 修改防火墙firewall设置(Linux、Ubuntu、CentOS)
    1、简介1.1Ubuntuhttps://ubuntu.com/download/desktopUbuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“......
  • Layer中使用事件
    前端一直以来都没怎么研究过,正好手头有个项目需要自己独立完成。项目使用的前端框架是LayUI,之前听过,不过一直都没有接触。最近遇到的一个问题是,弹出Layer,有个功能需要在这......
  • 怎么使用 Scrapy 框架自带的 pipelines
    目录定义一个item启用默认的FilesPipeline配置一个下载路径(FILE_STORE)调用items主文件下载做法精细化操作定义一个item参数要设置为file_urls和files调用时fi......
  • [WPF] 使用Silk.NET绘制D3D9或OpenGL内容并完美解决空域问题。
    可扩展渲染控件实现的基本思路(D3D、OpenGL绘制所使用的基类):   首先创建一个抽象类FramebufferBase,该类主要记录当前控件宽高和图像资源。publicabstractclas......