Cherno大佬的GameEngine学习笔记(2)-添加EntryPoint

这期视频一开始,大佬主要新建了Core.h,然后写了几个宏,用于区分项目是否处于windows环境下,以及是否是生成dll的项目。由于我是在mac下写的,就不写这些宏了,而且mac中好像也没有__declspec(dllexport)和__declspec(dllimport)。

花了点时间改了一下两个工程的CMakeLists,因为大佬改了点vs的配置,用一个头文件把engine工程下的文件都包含了,在clion下原本我那种写法还是不太行,而且来回拷贝头文件和dylib文件真的感觉有点麻烦,所以把两个工程的CMakeLists都改了。

首先是engine工程的CMakeLists,由于源文件不再只有一个,就把src文件夹下的文件都加入到了add_library中,试了一下其实add_library中不加EntryPoint.h也可以正常运行

然后是application工程下的CMakeLists,主要是改了include和link的directories,直接改成了engine工程下的目录,这样就不用每次都把文件拷过去了。

然后把第一节中用于测试的Test文件删了,写了一个类Application,里面内容也只是基本的构造与析构还有一个Run()

有一件重要的事情是,把main函数从sanbox工程中改写到了Star工程中的EntryPoint.h下,这个EntryPoint作为整个程序的入口,它的代码如下图所示。之前一直以为必须是executable中包含main函数,才可以运行,sanbox工程的CMakeLists写的是

add_executable(sandbox SandboxApp.cpp)

sandbox工程下的代码中已经没有main函数了,但是include了包含的EntryPoint.h的文件,整个程序跑起来时,还是能跑到EntryPoint.h的main函数。试了一下不include该文件,程序是无法运行成功的。看来只要整个源程序中存在main函数,即使executable的项目中不包含main函数也无所谓。

main函数中用到的Star::CreateApplication函数,其实现写在了application工程下,

最后便是在两个工程的父文件夹下添加了.gitignore文件,这好像是第一次自己手写.gitignore,这种写法可以直接忽略路径中所有目录下名为.idea、bin、cmake-build-debug的文件夹及其包含的文件。假如git add将不想要的文件添加到了缓存区中,也可以通过git reset .命令,再将其重置。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值