GAMES102课程框架环境配置

GAMES102课程框架环境配置

课程给出的环境配置方法一我不可用,故在这里通过方法二进行环境配置。由于项目CMakeLists.txt中给出的Ubpa_DownloadZip函数的assets_v2.zip的URL链接失效,故通过离线下载assets_v2.zip并修改cMakeLists.txt的URL为本地路径的方式进行cmake的配置

环境配置前需要做的准备

1. 编译好的依赖库 Ubpa_v2.zip(百度网盘提取码:qmp4)和我提供的assets_v2.zip文件。

将下载的Ubpa_v2.zip解压至文件夹下,并配置bin文件的环境变量,环境变量的配置在课程的md中已经给出,将assets_v2.zip下载完后记住文件路径,后面要用~

2. 相关软件的安装
  • Cmake-GUI
  • Visual Studio
  • GitHub Desktop(非必需)

关于软件的安装说明在课程的md中已经详细给出,在此不做赘述~

下面开始环境配置~

下载课程框架源码

这里通过GitHub Desktop方法下载,同学们也可以通过下载压缩包的形式下载
在这里插入图片描述

下载完成后通过cmake-GUI进行项目build编译

首先打开到项目的作业框架文件夹

在这里插入图片描述
修改CMakeLists.txt的内容
在这里插入图片描述
将其URL修改为你下载下来的assets_v2.zip的存储路径
在这里插入图片描述

通过Cmake-GUI进行项目的build搭建

在这里插入图片描述
通过配置Configures和Generate生成项目build代码,再通过open Project进入VS来进行项目运行,
打开解决方案管理器,打开GAMES102_Project。将其设为启动项目。

在这里插入图片描述

此时如果进行项目编译会报静态资源错误,是由于项目外部依赖部分方法的静态断言导致的,下面将具体文件的静态断言注释即可.

在错误报告中找到CmptPtr.h

在这里插入图片描述
将CmptAccessPtr类的静态断言注释掉即可,注释代码如下

// CmptAccessType + void*
	class CmptAccessPtr {
	public:
		constexpr CmptAccessPtr(CmptType type, void* p, AccessMode mode) noexcept : accessType{ type, mode }, p{ p } {}
		constexpr CmptAccessPtr(CmptAccessType accessType, void* p) noexcept : accessType{ accessType }, p{ p } {}
		constexpr CmptAccessPtr(CmptPtr p, AccessMode mode) noexcept : accessType{ p.Type(), mode }, p{ p.Ptr() } {}
		template<typename TaggedCmpt>
		constexpr CmptAccessPtr(TaggedCmpt p) noexcept : accessType{ CmptAccessType::Of<TaggedCmpt> }, p{ CastToVoidPointer(p) } {}
		explicit constexpr CmptAccessPtr(CmptPtr p) noexcept : CmptAccessPtr{ p, AccessMode::LATEST } {}
		explicit constexpr CmptAccessPtr() noexcept : CmptAccessPtr{ Invalid() } {}

		explicit constexpr operator CmptPtr() const noexcept { return { CmptType{accessType}, p }; }

		constexpr void* Ptr() const noexcept { return p; }

		constexpr CmptAccessType AccessType() const noexcept { return accessType; }

		static constexpr CmptAccessPtr Invalid() noexcept { return { CmptAccessType::Invalid(), nullptr }; };
		constexpr bool Valid() const noexcept { return p != nullptr && accessType.Valid(); }

		// check: type's access mode must be equal to <mode>
		template<typename Cmpt, AccessMode mode>
		constexpr auto As() const noexcept {
			assert(accessType.GetAccessMode() == mode);
			if constexpr (mode == AccessMode::LAST_FRAME)
				return LastFrame<Cmpt>{p};
			else if constexpr (mode == AccessMode::WRITE)
				return Write<Cmpt>{p};
			else if constexpr (mode == AccessMode::LATEST)
				return Latest<Cmpt>{p};
   
            
			//else
			//	static_assert(false);
		}
	private:
		friend class EntityMngr;
		CmptAccessType accessType;
		void* p;
	};
}

此时再次运行项目,会再次报四个同样的错误,找到相关文件将其静态断言注释即可,

注意!!!

注释时记得将else方法体全部注释,否则会出现C1001内部编译器错误的报错。

将其注释完成后项目即可运行~
在这里插入图片描述

希望能帮到各位同学~

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值