首页 > 其他分享 >构建工具Premake

构建工具Premake

时间:2023-09-15 18:57:42浏览次数:50  
标签:Premake premake 生成 7.6 OpenCASCADE 构建 工具

构建工具Premake

经常用Visual Studio写一些小程序来验证OpenCASCADE的功能,每次创建项目后都配置头文件,库路径,程序运行时还要配置Debug的环境变量,比较麻烦。也尝试过CMake和QMake,都不太理想。CMake学习曲线陡峭一点,还会生成一堆文件。QMake简单些,但是有的选项不支持。直到看到一个开源的游戏程序Overload,看其编译说明使用了Premake来构建。

使用IMGUI生成的软件界面比较酷炫,使用Premake生成Visual Studio解决方案。

1 什么是构建系统

构建系统(BuildSystem)是用来从源码生成用户可以使用的目标(Targets)的自动化工具。目标可以包括库,可执行文件,或者生成的脚本等等。

项目模块依赖关系维护 ;

目标的可配置化(不同系统:Windows,Mac…;不同平台:Win32,Win64,Amd64…)

目标生成的自动化

2 为什么使用构建系统

主要用于提高开发人员的效率与稳定,测试与发布的效率

-减少开发人员的知识成本(比如对同一流程,但多种平台,多种开发环境差异化的了解)

-减少项目项目变动的维护成本

– VisualStudio 的编译选项规则,配置方法

– Xcode 的编译选项规则,配置方法

– 其他。。。

-减少模块的维护成本

– 协同人员对工程文件,目录的修改冲突

减少平台,系统生成的差异化成本(可以简洁地配置不同的平台与系统)

– 通过简单的配置,可以灵活,快速地添加,修改,更新模块

– 可以方便的处理依赖关系,提高稳定性和编译速度

使用脚本和配置文件,实现自动清理,生成所需平台,系统,调试环境,测试流程,然后发布版本。

总的来说,就是使生成过程更加简洁,灵活,高效,自动化。

3 常见的构建系统

主流的可以跨平台,支持C++的构建系统

- CMake

- Scons

- Premake

其他还有 GNU Make,GNU autotools,Apache Ant(主要用于Java),Gradle(主要用于Java)

4 什么是Premake

Premake 是一种命令工具,通过读取项目脚本,来生成各种开发环境的项目文件。主要用于:

生成开发人员喜欢的平台,工具集(协同开发的人员,可以使用不同的平台和开发工具)

通过脚本保持不同平台,工具集下的项目配置同步(比如新建文件夹,引入新的库文件)

通过脚本来快速更新许多不同的大型代码库,并重新生成项目(比如对依赖的多种著名库的版本更新)

快速升级工具集的版本(比如无缝地从VisualStudio 2010升级到VisualStudio 2019)

目前支持:

Microsoft Visual Studio 2005-2019

GNU Make,包括 Cygwin 和 MinGW

XCode

Codelite

Premake 5.0 目前支持:

32 和 64 位平台

Xbox 360(仅支持Visual Studio)

插件模块可以支持其他语言,框架,和工具集

Premake 是存粹的旧版C应用程序,发布为一个单个的,非常小的exe文件。支持完整的Lua脚本环境

开源地址:https://github.com/premake/premake-core

下载地址:https://premake.github.io/

实例地址:https://github.com/wuguyannian/tutorial_premake

5 使用Premake

使用premake来构建一个使用了glfw, occt和imgui的程序。从配置文件可以看出,配置比CMake要简单:

workspace "OcctImgui"
    configurations {"Debug", "Release"}
    system "Windows"
    platforms {"Win64"}
    architecture "X64"
    language "C++"
    
project "OcctImgui"
    kind "ConsoleApp"
    language "C++"
    targetdir "build/bin/%{cfg.buildcfg}"
    objdir "build/obj/%{cfg.buildcfg}"
    
    files { "**.h",  "**.cpp"}
    
    -- Header files.
    includedirs
    {
        "C:/OpenCASCADE-7.6.0/opencascade-7.6.0/inc", 
        "C:/glfw-3.3.8/include"
    }
    
    -- Library files.
    links
    {
        "TKernel", "TKMath", "TKG2d", "TKG3d", "TKGeomBase", "TKGeomAlgo", "TKBRep", "TKTopAlgo", "TKPrim", "TKMesh", "TKService", "TKOpenGl", "TKV3d", 
        "glfw3"
    }

    filter "configurations:Debug"
      defines { "DEBUG" }
      symbols "On"
      
      libdirs
      {
          "C:/OpenCASCADE-7.6.0/opencascade-7.6.0/win64/vc14/libd", 
          "C:/glfw-3.3.8/lib"
      }
      
      debugenvs
      {
          "path=%path%;C:/OpenCASCADE-7.6.0/opencascade-7.6.0/win64/vc14/bind"
      }

   filter "configurations:Release"
      defines { "NDEBUG" }
      symbols "Off"
      optimize "On"
      libdirs
      {
          "C:/OpenCASCADE-7.6.0/opencascade-7.6.0/win64/vc14/lib", 
          "C:/glfw-3.3.8/lib"
      }
      
      debugenvs
      {
          "path=%path%;C:/OpenCASCADE-7.6.0/opencascade-7.6.0/win64/vc14/bin"
      }

通过premake生成的Visual Studio解决方案很干净,没有多余的文件。后面再要写一个小的验证程序时,只需要复制premake5.lua修改一下即可,很方便。对于小的验证程序来说,使用premake是理想的构建工具。

 

标签:Premake,premake,生成,7.6,OpenCASCADE,构建,工具
From: https://www.cnblogs.com/opencascade/p/occt_premake.html

相关文章

  • 测试行业面临的问题及RunnerGo在工具层面如何解决的
    RunnerGo致力于打造成一款企业级全栈测试平台,旨在实现产品生命周期的闭环管理,帮助企业在整个产品生命周期中确保质量、降低风险,并提供卓越的用户体验。采用了较为宽松的Apache-2.0license开源协议,方便志同道合的朋友一起为开源贡献力量。 目前测试行业所面临的问题场景共享......
  • Kubernetes日志查看工具
    K8SFilebeat+ElasticSearch+Kibana虽然该组合可以满足我们对于服务监控的要求,但是如果只是部署一个内部单服务用的话,未免显得大材小用,而且部署服务还会带来大量的资源消耗。那么有没有简单查看 K8S 中多个 Pod 中的日志工具呢?咳咳咳,那么今天就介绍两款超好用的多容器实时......
  • 使用NGINX或者Openresty构建正向和方向代理服务器
    本文提供正向代理和反向代理服务器构建方法,但仅仅提供windows下的具体实例。1、编译这一步对操作者要求非常高,建议跳到第2步。(1)下载OpenResty最新源码包https://openresty.org/download/openresty-1.19.3.1.tar.gz(2)下载正向代理源码包,注意如果openresty是最新版本,则正向代理也下......
  • vs 远程调试工具2019 2020 ,visual studio
    https://learn.microsoft.com/en-us/visualstudio/debugger/remote-debugging?view=vs-2022#download-and-install-the-remote-tools这个是唯一的方法,如果是非最新的版本,就必须这样这是具体vs2019远程工具下载地址https://download.visualstudio.microsoft.com/download......
  • 如何选择最适合您的AI编程工具
    ChatGPT的广泛应用引发了人工智能应用场景的重大变革和实践的探索。大规模专业模型在垂直领域得到了不断深化和实施。其中,基于大模型的编码AI工具的问世大大降低了开发复杂度,提高了开发人员的工作效率,对初级开发人员尤其有帮助。所以说,面对目前市场上涌现出的众多优秀的AI编程辅......
  • vue vue-devtools调试工具神器安装
    目录vuevue-devtools调试工具神器安装前言chrome商店直接安装手动安装第一步:找到vue-devtools的github项目,并将其clone到本地.vue-devtools第二步:安装项目所需要的npm包第三步:编译项目文件第四步:添加至chrome游览器vue-devtools如何使用文章转自vuevue-devtools调试工具神器安......
  • go包依赖管理-构建完整的依赖项目:目录结构及包的调用
    目录结构:<home>/|--greetings/|--hello/1.分别进入对应目录创建以上目录结构//bash切换到用户主目录 cd$HOMEPAHT$ //bash新建greetings目录并进入该目录mkdirgreetingscdgreetings//bash创建模组example.com/greetings$gomodinitexample.com/greetingsgo:......
  • Rust 开发命令行工具(上)
    ❝你必须按所想去生活,否则只能按生活去想。--王小波❞大家好,我是「柒八九」。作为一个前端/Rust/AI知识博主,之前的文章中,大部分篇幅都是关于前端的知识分享,而对Rust和AI的内容只是做了几篇内容梳理和介绍。而,我们今后的重心也会逐渐偏移,势必能达到前端/Rust/AI「三足鼎立」的局面......
  • 【Kubernetes】Kubernetes日志收集最佳实践及开源工具盘点
    Kubernetes是一种流行的开源容器编排平台,被开发人员和DevOps团队广泛用于部署和管理容器化应用程序。在Kubernetes上运行任何应用程序的一个关键方面是日志收集,它有助于监控应用程序的健康和性能,并快速解决问题。在本文中,我们将讨论Kubernetes日志收集以及Kubernetes环境中的最佳实......
  • 软件测试|全面解析Docker Start/Stop/Restart命令:管理容器生命周期的必备工具
    简介Docker是一种流行的容器化平台,用于构建、分发和运行应用程序。在使用Docker时,经常需要管理容器的生命周期,包括启动、停止和重启容器。本文将详细介绍Docker中的dockerstart、dockerstop和dockerrestart命令,帮助您全面了解如何管理容器的运行状态。在Docker中,容器是独立......