标签: premake

Makefile生成器:premake vs bakefile?

对于我的C++构建过程,我使用的是Bakefile,一个很好的小Makefile生成器,它允许您用XML指定构建目标,并且可以从中生成各种Makefile或项目文件.它工作正常,我用它来生成GNU autotools脚本.

现在我听说过Premake,它看起来有类似的功能.您在Lua中指定目标,并相应地生成Makefile.

有谁知道Bakefile和Premake之间的区别?有没有人有这方面的经验?Premake似乎更近期,并且更积极的发展?

XML解析器ticpp使用Premake,但它要求您在构建ticpp之前下载premake.他们不能只为各种系统预生成Makefile,这样您就不必先下载并安装premake了吗?

注意:我知道有关各种最佳构建工具的SO线程,通常答案是CMake,SConsJam.但是,我对用户在构建项目之前不必下载的内容感兴趣.

build-process makefile bakefile premake

11
推荐指数
2
解决办法
4259
查看次数

创建静态库并使用premake链接到它

我目前正在尝试学习如何使用premake 4将其应用于OpenGL sdk.我目前正在尝试使用main方法构建一个构建2个项目的Visual Studio 2010解决方案,一个是静态库,另一个包含单个主源文件.

这个项目非常简单,仅用于学习预制.在名为Test的静态库项目中,我有2个文件,Test.h和Test.cpp.Test.h包含方法print()的原型.print()只是在控制台上打印一行.使用premake,我将静态库链接到Main项目,而在main.cpp中我已经包含了Test.h文件.我的问题是:在VS2010中,当我尝试构建时出现此错误:

1>main.obj : error LNK2019: unresolved external symbol "void __cdecl print(void)" (? print@@YAXXZ) referenced in function _main  
1>.\Main.exe : fatal error LNK1120: 1 unresolved externals

这是我在4个文件中的代码,premake4.lua:

solution "HelloWorld"
    configurations {"Debug", "Release"}
project "Main"
    kind "ConsoleApp"
    language "C++"
    files{
        "main.cpp"

    }
    configuration "Debug"
        defines { "DEBUG" }
        flags { "Symbols" }

    configuration "Release"
        defines { "NDEBUG" }
        flags { "Optimize" } 
    links {"Test"}
project "Test"
    kind "StaticLib"
    language "C++"
    files{
        "test.h",
        "test.cpp"

    } …
Run Code Online (Sandbox Code Playgroud)

c++ static-libraries visual-studio-2010 premake

6
推荐指数
1
解决办法
4188
查看次数

使用 Premake 5 和 Visual Studio 2015 将 GLSL 编译为 SPIR-V

我希望 Visual Studio 自动检测着色器文件的更改并运行 glslangValidator 作为构建步骤,而不是手动将 GLSL 着色器编译为 SPIR-V。我正在使用 Premake 生成 Visual Studio 解决方案/项目。

一种部分有效的解决方案是在 中声明premake5.lua

    --prebuildcommands [[for %%i in (..\data\shaders\*) do (..\libs\vulkan\glslangValidator.exe -V -o "%%~dpibin\%%~nxi.spv" %%i)]]
Run Code Online (Sandbox Code Playgroud)

然后right-click shader in solution explorer -> properties -> General -> Item Type -> Custom Build Tool

这种方法有一些缺点:

  • 当只有一个更改时,所有着色器都会重新编译
  • 我不得不手动更改 VS 项目设置

我在 premake 文档中找到的最接近的东西是:Custom Build Commands。我认为这个想法是在着色器文件上使用过滤器并生成构建命令,但我无法获得任何工作。也许其他人有想法?

glsl visual-studio premake vulkan

6
推荐指数
1
解决办法
1551
查看次数

如何从预制构建脚本运行自定义工具?

我在 C++ 应用程序中使用协议缓冲区进行数据序列化。我想protoc在我的premake构建脚本中添加代码生成器的调用(从而确保生成的类的最新状态并避免需要在版本控制下存储生成的源代码)。

甚至他们的FAQ也有关于这个的问答,但对我来说答案很不完整。能够调用任何 lua 函数是很棒的,但是我到底把那个调用放在哪里呢?我需要在构建应用程序或单元测试之前运行 protoc 编译器。

lua build-process premake

5
推荐指数
1
解决办法
2905
查看次数

如何在C++构建工作流程中集成PreMake/CMake

我现在正在看PreMake/CMake.但是,我没有看到如何在整个跨平台构建工作流程中使用它.实际上,它会生成makefile(或解决方案).那么,您如何在每个目标平台上实际构建这些解决方案?您是否必须为每个目标维护一个构建脚本(如.sh或.bat文件)?这首先会破坏使用premake/CMake等工具的目的.

指向使用premake从编码到最终构建产品的所有过程的教程链接将非常棒.

谢谢你的帮助.

c++ build-automation continuous-integration cmake premake

5
推荐指数
1
解决办法
3521
查看次数

如何告诉premake生成使用clang的Makefile?

我想在生成Makefile(gmake工具链)时使用clang构建我的应用程序.有没有办法做到这一点?

makefile build premake

5
推荐指数
2
解决办法
3336
查看次数

多平台预制脚本

我是 Node9 的作者,Node9 是一个托管的混合操作系统,它结合了 Inferno 和 LuaJIT,创建了一个交互式的分布式开发环境。请参阅此处的项目: https: //github.com/jvburnes/node9

我创建了一个基本的 4.x 预制脚本来编译 OSX 的所有依赖项和主要源代码,但现在人们要求 Linux、BSD 和 Windows 的构建配置。我有执行此操作的代码,并且我想创建预制配置以在这些操作系统上构建和运行 Node9。我需要设置库并包括搜索路径、编译器名称以及每个平台的定义。

  1. 谁能给我指出一个好的多平台预制脚本?
  2. 我是否使用“premake gmake”并以某种方式感知本机平台,或者我是否需要在命令行上显式放置目标平台并在 premake 配置和平台部分中引用该平台?
  3. 我听说 premake 4.x 是遗留版本,而 premake 5.x 是未来的解决方案。它是否足够稳定且可用,可以为所有这些平台构建?

我知道这有很多问题,但我想把这件事做好。

谢谢。

premake

5
推荐指数
1
解决办法
2262
查看次数

premake5:如何在vs2015中将运行时库设置为多线程DLL(/MD)

kind "SharedLib"
language "C++"
defines "DLL_EXPORT"
targetname "read_cad_file"
targetextension ".arx"
Run Code Online (Sandbox Code Playgroud)

我正在使用 objectARX 进行开发,我想使用premake5vs2015编译我的项目。脚本中的一些设置如上。在此设置下,在属性->C/C++->代码生成->运行时库中,运行时库为Multithreaded Debug(/MTd)。我想问如何使用premake5将其更改为多线程DLL(/MD)?多谢:)

c++ autocad premake visual-studio-2015

5
推荐指数
2
解决办法
5439
查看次数

premake5 中“gmake”和“gmake2”操作之间的区别

我是 premake5 的新用户,并试图了解如何在未来的项目中使用它。对于生成器,'gmake' 和 'gmake2' 有一个选项,它们似乎生成不同的 Makefile,但我不清楚究竟有什么区别。

我无法在 wiki 上找到很多关于它的信息,而且 gmake2 似乎并不只是 gmake 的一个新的改进版本。

最近在github 问题 #885上提出了类似的问题,但没有回应。谁能告诉我有什么区别,所以我会知道什么时候使用哪个?

premake

5
推荐指数
0
解决办法
806
查看次数

使用 premake5 创建 VS2015+ 的项目文件过滤器?

在我们最初的解决方案中,我们的项目中有过滤器,允许我们对文件进行排序:“源文件”、“头文件”等。

我想用premake 5重现这种行为。我可以创建用于对项目进行排序的过滤器group "...",但无法在项目内执行相同的任务。

有任何想法吗?

premake

4
推荐指数
1
解决办法
1101
查看次数

Premake4实用程序和应用程序入口点

我使用premake4.exe实用程序为不同的平台生成项目文件.问题是我找不到如何在lua-config文件中指定自定义应用程序入口点.

我应该使用哪个选项?例如,在Visual Studio中我可以去

Project Properties->Linker->Advanced
Entry Point  = name_of_my_entry_point_function
Run Code Online (Sandbox Code Playgroud)

在premake4手册(http://industriousone.com/flags)中,我发现只有WinMain()标志将WinMain函数确定为应用程序入口点,但我需要自定义入口点,例如像wmain().

c++ lua visual-studio-2010 premake

3
推荐指数
1
解决办法
401
查看次数

使用 premake 和 vs2019 与 glfw 链接时遇到问题

我正在尝试使用 premake 5 构建一个简单的项目。在 win10 上使用 Visual Studio 2019。Premake 对我来说是新的,但我开始很简单:唯一的依赖项是 glm (仅标头库)、GLAD 和 GLFW。我将 GLAD 和 GLFW 作为子项目包含在我的预制文件中。项目生成进展顺利。

glm 已正确包含并可用。

构建时:GLAD 和 GLFW 正确构建到各自的 .lib 文件,但“核心”应用程序失败并出现以下链接器错误:

3>GLFW.lib(init.obj) : error LNK2019: unresolved external symbol _glfwSelectPlatform referenced in function glfwInit
3>GLFW.lib(vulkan.obj) : error LNK2019: unresolved external symbol _glfwPlatformLoadModule referenced in function _glfwInitVulkan
3>GLFW.lib(vulkan.obj) : error LNK2019: unresolved external symbol _glfwPlatformFreeModule referenced in function _glfwInitVulkan
3>GLFW.lib(vulkan.obj) : error LNK2019: unresolved external symbol _glfwPlatformGetModuleSymbol referenced in function _glfwInitVulkan
Run Code Online (Sandbox Code Playgroud)

我在构建 glfw 时一定缺少配置选项

这是负责构建 GLFW 的 …

c++ glfw premake

2
推荐指数
1
解决办法
2009
查看次数

Lua for premake4初学者:'variable = {"a","b"}'与'variable {"a","b"}'相同?

在premake我们有同样的结构 files { "**.h", "**.cpp" }files = { "**.h", "**.cpp" }是一回事吗?

lua premake

1
推荐指数
1
解决办法
305
查看次数