• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            eryar

            PipeCAD - Plant Piping Design Software.
            RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
            posts - 603, comments - 590, trackbacks - 0, articles - 0

            構(gòu)建工具Premake

            Posted on 2023-09-18 20:49 eryar 閱讀(695) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            構(gòu)建工具Premake

            經(jīng)常用Visual Studio寫一些小程序來驗證OpenCASCADE的功能,每次創(chuàng)建項目后都配置頭文件,庫路徑,程序運行時還要配置Debug的環(huán)境變量,比較麻煩。也嘗試過CMake和QMake,都不太理想。CMake學(xué)習(xí)曲線陡峭一點,還會生成一堆文件。QMake簡單些,但是有的選項不支持。直到看到一個開源的游戲程序Overload,看其編譯說明使用了Premake來構(gòu)建。

            使用IMGUI生成的軟件界面比較酷炫,使用Premake生成Visual Studio解決方案。

            1 什么是構(gòu)建系統(tǒng)

            構(gòu)建系統(tǒng)(BuildSystem)是用來從源碼生成用戶可以使用的目標(biāo)(Targets)的自動化工具。目標(biāo)可以包括庫,可執(zhí)行文件,或者生成的腳本等等。

            項目模塊依賴關(guān)系維護(hù) ;

            目標(biāo)的可配置化(不同系統(tǒng):Windows,Mac…;不同平臺:Win32,Win64,Amd64…)

            目標(biāo)生成的自動化

            2 為什么使用構(gòu)建系統(tǒng)

            主要用于提高開發(fā)人員的效率與穩(wěn)定,測試與發(fā)布的效率

            -減少開發(fā)人員的知識成本(比如對同一流程,但多種平臺,多種開發(fā)環(huán)境差異化的了解)

            -減少項目項目變動的維護(hù)成本

            – VisualStudio 的編譯選項規(guī)則,配置方法

            – Xcode 的編譯選項規(guī)則,配置方法

            – 其他。。。

            -減少模塊的維護(hù)成本

            – 協(xié)同人員對工程文件,目錄的修改沖突

            減少平臺,系統(tǒng)生成的差異化成本(可以簡潔地配置不同的平臺與系統(tǒng))

            – 通過簡單的配置,可以靈活,快速地添加,修改,更新模塊

            – 可以方便的處理依賴關(guān)系,提高穩(wěn)定性和編譯速度

            使用腳本和配置文件,實現(xiàn)自動清理,生成所需平臺,系統(tǒng),調(diào)試環(huán)境,測試流程,然后發(fā)布版本。

            總的來說,就是使生成過程更加簡潔,靈活,高效,自動化。

            3 常見的構(gòu)建系統(tǒng)

            主流的可以跨平臺,支持C++的構(gòu)建系統(tǒng)

            - CMake

            - Scons

            - Premake

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

            4 什么是Premake

            Premake 是一種命令工具,通過讀取項目腳本,來生成各種開發(fā)環(huán)境的項目文件。主要用于:

            生成開發(fā)人員喜歡的平臺,工具集(協(xié)同開發(fā)的人員,可以使用不同的平臺和開發(fā)工具)

            通過腳本保持不同平臺,工具集下的項目配置同步(比如新建文件夾,引入新的庫文件)

            通過腳本來快速更新許多不同的大型代碼庫,并重新生成項目(比如對依賴的多種著名庫的版本更新)

            快速升級工具集的版本(比如無縫地從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應(yīng)用程序,發(fā)布為一個單個的,非常小的exe文件。支持完整的Lua腳本環(huán)境

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

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

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

            5 使用Premake

            使用premake來構(gòu)建一個使用了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解決方案很干凈,沒有多余的文件。后面再要寫一個小的驗證程序時,只需要復(fù)制premake5.lua修改一下即可,很方便。對于小的驗證程序來說,使用premake是理想的構(gòu)建工具。

             

            一本色道久久88加勒比—综合| 亚洲伊人久久大香线蕉苏妲己| 香蕉久久影院| 日韩欧美亚洲综合久久| 久久久亚洲裙底偷窥综合| 久久久久人妻一区二区三区vr| 天天久久狠狠色综合| 久久精品国产亚洲αv忘忧草| 精品久久久久久久无码| 久久性精品| 久久久久久久97| 久久99热这里只频精品6| 国产午夜精品久久久久免费视 | 久久久久综合网久久| 无码乱码观看精品久久| 精品午夜久久福利大片| 伊人久久大香线蕉综合影院首页| 久久er国产精品免费观看2| 久久久久久久精品妇女99| 精品免费久久久久国产一区| 国产精品久久亚洲不卡动漫| 久久久国产打桩机| 老男人久久青草av高清| 激情五月综合综合久久69| 91精品国产乱码久久久久久| 亚洲精品乱码久久久久久自慰| 久久亚洲国产最新网站| 日韩欧美亚洲综合久久影院Ds | 97精品伊人久久久大香线蕉| 欧美va久久久噜噜噜久久| 国内精品人妻无码久久久影院导航 | 亚洲国产精品无码久久久久久曰 | 99久久国产亚洲综合精品| 国产午夜精品久久久久九九| 亚洲国产精久久久久久久| 久久精品人人做人人爽电影| 国产精品99久久精品| 久久电影网一区| 国产高潮久久免费观看| 欧美精品一区二区久久| 成人综合久久精品色婷婷|