前言
如题,最近搜索一些C++项目无意中看到它,然后就动手构建了一把,当然过程肯定会遇到一些问题的了。
不然也不会写这篇文章跟大家分享了呀,是吧!
来来来,先给大家show下我的劳动成果哈
构建环境说明
系统:
终端环境: iterm + zsh
成功构建步骤
第一步:下载原码
git clone https://github.com/amhndu/SimpleNES.git
第二步:安装依赖
如上图所示,SimpleNES是依赖SFML这个图形库的,所以我们在构建之前需要依赖它,这里用brew来安装(最好是用brew来安装,如果是手机下载SFML的话,需要手机处理构建时找不到SFML的问题)
brew install sfml
第三步:构建
git clone https://github.com/amhndu/SimpleNES
cd SimpleNES
# 进入SimpleNES的根目录,如果该目录下已经有了build目录,可以直接cd进去,然后rm清空里边的文件
mkdir build/ && cd build/
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4
构建成功后,build目录会有一个可执行文件SimpleNES (先不要急着运行它!)
第四步:下载游戏
可以到这里去 nes游戏下载(wowroms.com)下载游戏,或到上传的资源下去>>点这里下载
第五步:配置输入监视
由于我们上面构建出来的是一个终端下的可执行文件,我们待会需要在终端下运行了,所以需要给终端配置输入监视
否侧SimpleNES将接收不到键盘事件!(由于给了终端配置权限,所以在终端下启动的应用也就拥有了同样的权限)
第六步:运行
# 在build目录下启动, nes游戏文件的路径需要根据你下载文件的具体路径做调整
./SimpleNES ~/Downloads/Super\ Mario\ Bros.\ \(World\).nes
可能会遇到的问题
运行时SFML库加载失败
直接下SFML的SDK并解压,而在构建脚本时候配置好SFML的搜索路径后,能正常构建。但SimpleNES启动后会弹窗标示SFML相关的库加载失败。这个需要通过brew安装SFML,让SFML的库安装到系统用户库的目录下
端终下将会出现如下的提示
$ ./SimpleNES
dyld: Library not loaded: @rpath/libsfml-audio.2.5.dylib
Referenced from: /Users/luogw/study/code/SimpleNES/build/./SimpleNES
Reason: no suitable image found. Did find:
/Users/luogw/Downloads/SFML-2.5.1-macos-clang/lib/libsfml-audio.2.5.dylib: code signature in (/Users/luogw/Downloads/SFML-2.5.1-macos-clang/lib/libsfml-audio.2.5.dylib) not valid for use in process using Library Validation: library load disallowed by system policy
/Users/luogw/Downloads/SFML-2.5.1-macos-clang/lib/libsfml-audio.2.5.dylib: stat() failed with errno=1
[1] 12120 abort ./SimpleNES
模拟器按键无响应
就是没有配置输入监视,如果启动后按任何按键模拟器都没有任何响应,如何终端下会有如下的提示
We got a keyboard without any keys (1)