1. 故事背景

想从unity转unreal了,于是要使用c++进行开发。unreal引擎那么大,每次打开,我的小本都嗡嗡嗡的,想着不如用个轻量一些的引擎先开发吧,核心代码独立出来,到时候如果真要移植到unreal也方便。

在sdl2/sfml中纠结了一下,最终选择了文档相对较多的sdl2。本来试用了Xcode,但是实在是不习惯,感觉和JetBrains的编译器差太远了...决定还是用clion试一下。

但是到处看了各种参考资料,没有一篇能完全满足我的要求:

  • 1 在mac下开发
  • 2 使用c/c++进行开发
  • 3 用clion的CMake
  • 4 智能提示SDL2库方法

作为编程多年,但是c语言还停留在大学水平的开发,我还被迫学习了Cmake。

一番摸索完成后,决定自己写一篇,记录的同时,也造福其他需要的人。

话不多说,开始吧!

2. 利用homebrew安装sdl2

依次执行下面的命令就好了

  • 安装国内镜像的Homebrew,一路往下YES就行
$ /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
  • 安装sdl2
$ brew install sdl2_mixer
  • 查看下sdl2库安装情况
$ brew info sdl2

根据安装的版本不同,可能得到不同的信息,下面是我的

sdl2: stable 2.0.16 (bottled), HEAD
Low-level access to audio, keyboard, mouse, joystick, and graphics
https://www.libsdl.org/
/usr/local/Cellar/sdl2/2.0.16 (91 files, 5.4MB) *
Poured from bottle on 2021-08-27 at 05:51:01
From: https://mirrors.ustc.edu.cn/homebrew-core.git/Formula/sdl2.rb
License: Zlib
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 107,393 (30 days), 219,217 (90 days), 957,010 (365 days)
install-on-request: 10,041 (30 days), 19,802 (90 days), 91,778 (365 days)
build-error: 0 (30 days)

其中,第4行的/usr/local/Cellar/sdl2/2.0.16很有用,是我们安装sdl2库的位置,下面会用到。

3. 创建clion项目

我们分C项目和CPP项目。

创建项目的时候,记得选C Executable或者C++ Executable哦。

3.1 C项目

  • CMakeLists.txt内容
cmake_minimum_required(VERSION 3.20)
project(SimpleWindow C) set(CMAKE_C_STANDARD 11)
set(SDL_DIR /usr/local/Cellar/sdl2/2.0.16/)
include_directories(${SDL_DIR}/include/)
link_directories(${SDL_DIR}/lib/) add_executable(SimpleWindow main.c) target_link_libraries(SimpleWindow SDL2 SLD2_test SDL2main)
  • main.c内容
#include "stdio.h"
#include <SDL2/SDL.h> const int WIDTH = 400, HEIGHT = 400; int main() {
if (SDL_Init(SDL_INIT_EVERYTHING)) {
printf("Can not init video");
return 1;
} SDL_Window *win = SDL_CreateWindow(
"Hello world",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT,
SDL_WINDOW_ALLOW_HIGHDPI
); if (win == NULL) {
printf("Can not create window");
return 1;
} SDL_Event windowEvent;
while(1) {
if (SDL_PollEvent(&windowEvent)) {
if (SDL_QUIT == windowEvent.type) {
printf("SDL quit!!");
break;
}
}
} SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}

都创建好了之后,点击运行,可以看到下面的窗口

3.2 CPP项目

  • CMakeLists.txt内容
cmake_minimum_required(VERSION 3.20)
project(SimpleWindow) set(CMAKE_C_STANDARD 11)
set(SDL_DIR /usr/local/Cellar/sdl2/2.0.16/)
include_directories(${SDL_DIR}/include/)
link_directories(${SDL_DIR}/lib/)
add_executable(SimpleWindow main.cpp)
link_libraries(SDL2)
target_link_libraries(SimpleWindow SDL2 SDL2main)
  • main.cpp内容
#include <iostream>
#include <SDL2/SDL.h>
using namespace std; const int WIDTH = 400, HEIGHT = 400; int main() {
if (SDL_Init(SDL_INIT_EVERYTHING)) {
cout << "SDL could not initialized with error: " << SDL_GetError() << endl;
return 1;
} SDL_Window *win = SDL_CreateWindow(
"Hello world",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT,
SDL_WINDOW_ALLOW_HIGHDPI
); if (win == NULL) {
cout << "SDL could not create window with error: " << SDL_GetError() << endl;
return 1;
} SDL_Event windowEvent;
while(true) {
if (SDL_PollEvent(&windowEvent)) {
if (SDL_QUIT == windowEvent.type) {
cout << "SDL quit!!" << endl;
break;
}
}
} SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}

参考文章

mac安装brew(亲测)

SDL2 环境构建 (macOS + CLion + SDL2)

SDL2:第一个程序(Mac)

mac下用clion进行sdl2游戏开发de环境搭建的更多相关文章

  1. mac下使用clion构建boost库

    mac下使用clion构建boost库 使用brew install boost 完成后发现boost被安装在在/usr/local/Cellar/boost下 jetbrain给出的指导意见 htt ...

  2. 【1】windows下IOS开发基础环境搭建

    一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包:       ...

  3. IOS开发基础环境搭建

    一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包:       ...

  4. golang开发android环境搭建_window

    golang开发android环境搭建介绍 一 安装依赖软件: git:版本管理 go:  go开发环境(版本>=1.5),可直接下载window版的go安装包. android studio: ...

  5. 基于Axis1.4的webservice接口开发(环境搭建)

    基于Axis1.4的webservice接口开发(环境搭建) 一.环境搭建: 1.搜索关键字“Axis1.4”下载Axis1.4相关的jar包. 下载地址:http://download.csdn.n ...

  6. JM-1 手机网站开发测试环境搭建

    JM-1 手机网站开发测试环境搭建 一.总结 一句话总结:WEB服务器环境可实现局域网内轻松访问.360wifi可以实现局域网. 二.微网站开发环境: 1.把微网站放到本机wamp环境下,用pc浏览器 ...

  7. Python开发:环境搭建(python3、PyCharm)

    Python开发:环境搭建(python3.PyCharm) python3版本安装 PyCharm使用(完全图解(最新经典))

  8. 【nginx,apache】thinkphp ,laravel,yii2开发运行环境搭建

    缘由 经常会有人问xx框架怎么配置运行环境,这里我就给贴出吉祥三宝(Yii2,Laravel5,Thinkphp5 )的Nginx和Apache的配置,供大家参考 Nginx Yii2 server  ...

  9. ArcGIS API for Silverlight/ 开发入门 环境搭建

    Silverlight/ 开发入门 环境搭建1 Silverlight SDK下载ArcGIS API for Microsoft Silverlight/WPF ,需要注册一个ESRI Gloab ...

随机推荐

  1. Optional 的使用会导致性能下降吗?

    几天前,我在论坛上发了一篇关于Optional 的文章.其中一条评论是一个非常好的问题: Optional 的使用会导致性能下降吗? 答案是: 是的,它会的.但是你应该担心吗? 使用Optional的 ...

  2. 简单快速安装Apache+PHP+MySql服务环境(二)—— centos使用yum安装php5.6

    使用默认方式yum install php安装的php版本为5.4,在使用某些PHP框架的时候可能会有问题,所以需要安装高版本的PHP. 通过yum list php*查看是否有自己需要安装的版本,如 ...

  3. python算法学习--待续

    几个算法网站 算法可视化网站:https://visualgo.net/en,通过动画展示算法实现过程 程序可视化网站:http://www.pythontutor.com/visualize.htm ...

  4. jvm源码解读--14 defNewGeneration.cpp gc标记复制之后,进行空间清理

    进入Eden()->clean()函数 void EdenSpace::clear(bool mangle_space) { ContiguousSpace::clear(mangle_spac ...

  5. 多个filter如何决定调用顺序

    答案是:web-inf中的web.xml决定

  6. dragover event 翻译

    当选择的元素或文本被拖拽到一个有效的放置目标上时(每几百毫秒),dragover事件就会被触发. 该事件在放置目标上被触发. Property Type Description target Read ...

  7. 自动部署Springboot项目脚本小脚本

    #!/bin/bash echo '自动部署Springboot项目脚本...' # aaa.jar 项目jar包 pid=`ps -ef|grep aaa.jar|grep -v grep|grep ...

  8. Android ELF文件解析

    0X01  ELF初认识 elf文件是linux下的二进制文件,相当于windows下的PE文件,Android系统里的dll. 解析elf文件两个用处:1.so加固:2.frida(xposed)检 ...

  9. Android NDK 直播推流与引流

    本篇介绍一下直播技术中推流与引流的简单实现. 1.流媒体服务器测试 首先利用快直播 app (其他支持 RTMP 推流与引流的 app 亦可)和 ffplay.exe 对流媒体服务器进行测试. 快直播 ...

  10. Android开发没有一技之长就废了吗?

    写在前面的话 不知你发现没有,人到中年之后,时间流逝的速度仿佛越来越快? 还记得毕业那会儿,我们怀着新鲜和好奇踏进了职场,那个时候每天都是满满的挑战和需要学习的东西,感觉时间过得真慢啊: 不知道从什么 ...