premake5实例教程

premakeExample

1 简介

本文讲解如何基于premake5创建一个典型的C++解决方案,该解决方案包含三个项目:

  • 一个依赖GLFW动态库的动态库项目ExampleDll
  • 一个依赖ExampleDll动态库的窗口程序APP
  • 一个基于Catch的单元测试程序UnitTest

所有代码已上传Github,链接

2 你需要准备

  • premake5.exe程序
  • 一个文本编辑器
  • 一个支持C++11的编译器,因为源代码使用了C++11特性
  • 一个支持OpenGL 1.1的显卡

3 文件的组织结构

首先需要确定整个解决方案中源代码、三方库、二进制等文件的组织结构,本文创建的文件结构如下:

premakeExample/
 |–premake5.lua (premake脚本文件)
 |–prj/ (生成的解决方案与各项目配置文件路径)
 |–build/
 | |–target/ (目标生成路径)
 | |–obj/ (中间文件生成路径)
 |–bin/ (最终发布的二进制文件路径)
 |–3rd/ (第三方库文件路径)
 | |–Catch (Catch单元测试框架头文件路径)
 | |–glfw (glfw三方库相关文件路径)

4 下载所需文件

本文以64位系统为例,需下载64位二进制库,也可以下载32位,但要记得在后面lua脚本中改变architecture配置。

将下载解压后的include和lib-vc*文件夹放在premakeExample/3rd/glfw文件夹下,*指代不同的vs版本,需与后续生成配置文件的vs版本一致。

将lib-vc*路径下的glfw3.dll拷贝纸premakeExample/bin路径下

  • catch是一个只有头文件的依赖库,将Catch.hpp(下载)放在premakeExample/3rd/Catch/include路径下即可。

5 添加代码

5.1 ExampleDll

ExampleDll库只是对glfw中的GLFWwindow进行了简单封装,隐藏了window的内部实现细节。Window类通过_declspec(dllexport)导出。

  • ExampleDll.hpp代码如下:
#ifndef EXAMPLE_DLL_HPP
#define EXAMPLE_DLL_HPP 1
#include <string>
#include <memory>
struct GLFWwindow;
namespace ExDLL
{
   	
	class _declspec(dllexport) Window
	{
   
	public:
		Window(int width, int  height, const std::string& title);
		~Window();
		bool shouldClose() const noexcept;
		void pollEvents() const noexcept
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值