问题标签 [premake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
147 浏览

static - 包含外部静态库的 Premake 指令

我有一个外部构建的静态库(在预制之外)。我使用什么样的库指令来告诉它在 make 文件中包含它。我在 OSX 上构建,似乎静态库需要包含在编译命令中的“.o”目标文件中。现在我只是手动将它破解到makefile中,但它很难看。我记得尝试这样做了几个星期,但没有找到解决方案。我决定几个月后回来再试一次。

有任何想法吗?也许有一些令人痛苦的显而易见的事情。

谢谢你

0 投票
1 回答
721 浏览

visual-studio-2010 - 在 premake 中包含外部解决方案

我正在尝试编写一个顶级premake4脚本来构建一个具有多个外部依赖项的项目。

外部构建包括(据我所知)premake 不理解的 Java 和 CMake 之类的东西。该脚本会生成一个 MS Visual Studio 2010 解决方案。有没有办法告诉 premake 将项目包含在解决方案中,以便在 Visual Studio 中构建过时的外部项目将重建它们?

0 投票
1 回答
375 浏览

premake - 通过 premake 中的配置类型对变量进行专门化

我在 Visual Studio 2013 中使用 premake5,并尝试将第三方库链接到我的项目。这个库的调试版本像往常一样具有“d”后缀。这是示例脚本。

但是这个脚本在两个配置(调试和发布)icuin.lib 和 icuuc.lib 中都有链接。如果我在配置“发布”块中删除d = ""分配,那么这两个配置都链接 icund.lib 和 icuucd.lib 库。看起来 premake 在解析 %{d} 占位符时使用了最新看到的变量定义。如何更改我的脚本以获得正确的行为?谢谢!

0 投票
1 回答
172 浏览

premake - premake5 添加新的复杂字段

我正在尝试在我的 premake5 脚本中添加一个新的 premake5 字段,但无法理解如何指定 field.kind 。

我想添加一个包含 (path, string) 对列表的字段,但不知道如何指定种类 spec 。文档和示例不是特别清楚。

这就是我注册新领域的方式

在配置范围内,我像这样声明字段项

但是,在处理时间方面,我没有得到我在该领域的期望:

有人可以解释如何从 api.lua 中注册的字段种类正确构建复杂种类吗?

我知道“list:integer”指定了一个整数列表,但不知道“keyed”元素是如何工作的。

0 投票
1 回答
1004 浏览

premake - premake5 将生成的文件添加到 vstudio 项目中

我已经覆盖了 vs2012 动作的 onProject 函数,它生成一些 cpp 文件,然后尝试将它们包含在项目中

这是尝试将每个生成的文件添加到项目中的函数

在大多数情况下 - 这一切都有效:文件正确生成并正确位置文件也正确包含在 vcxproj 文件中

我的问题是没有生成 vcxproj.filters 文件。当我运行 premake 我得到这个错误:

它对应于函数 premake.vstudio.vc2010.filterGroup(prj, groups, group) 我知道我创建的新 fcfg 需要有一个父级,但我不知道应该将它添加到何处或添加什么。

任何人都可以帮忙吗?

编辑 1

通过将此行添加到函数 mine.addFileToSources(extraFile) 的末尾,我已经完成了工作

这为文件配置提供了一个父节点,所以一切正常,但我觉得这样做有点脏,所以我会按照 Citron 的建议来看看

编辑 2

覆盖烘焙文件更加干净整洁。它不像 Citron 的代码那么简单,因为我需要来自烘焙文件的信息才能执行文件生成,但我现在确信我的代码是正确的,并且可能也可以与 vstudio 以外的其他导出器一起使用。

这是我的新代码:

0 投票
1 回答
268 浏览

premake - 根据给定的链接在项目范围内获取预制项目

承认我目前的范围是一个项目

我正在使用 premake-dev

我如何访问链接功能中引用的项目列表。目的是执行构建后命令,将一些生成的库复制到特定文件夹。

我应该存储项目返回值吗?

基于此,我将如何列出链接中列出的项目?

更新

我使用一小段代码成功列出了链接的项目:

现在问题不同了,当 premake 到达这段代码时(位于我的项目中,就在链接声明之后),尚未设置配置。

你不能使用:premake.project.eachconfig(prj)因为它会抛出一个错误。

所以我正在考虑使用 API 注册新操作,我不确定这是否是最佳选择:

premake5 导出 --target=...

0 投票
1 回答
388 浏览

premake - 如何防止动态链接器中的绝对路径

我有一个包含各种项目的解决方案,其中一个是主要的可执行文件,其余的是可执行文件所依赖的库。每个都可以很好地编译和链接。但是,尝试启动可执行文件会产生奇怪的结果。使用 ldd,我看到可执行文件正在尝试查找如下库:

但是,对于每个项目,我将“bin/debug”(这是这些库的输出目录)声明为 libdirs 条目,并通过添加“BlahBlah”作为链接来链接库,其中“BlahBlah”是项目名称。

我什至不确定如何在没有预制的情况下完成此操作。任何帮助表示赞赏。

最初的意图是让库位于可执行文件旁边,然后设置一个 RPATH 来搜索可执行文件旁边的库。以现在的方式,它会搜索相对于可执行文件的绝对路径……我不知道如何将其关闭。

我正在使用premake5。我尝试使用每晚并自己编译。然而,上游目前尚未编译。

0 投票
3 回答
1612 浏览

premake - 多平台预制脚本

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

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

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

我知道这是很多问题,但我想正确地做到这一点。

谢谢。

0 投票
1 回答
747 浏览

premake - Premake5 prebuildcommands 目录

我正在将 premake4 配置转换为 premake5。我的 prebuildcommands 失败了,因为这些命令是从根工作目录执行的,而不是 premake5.lua 所在的包含“prebuildcommands”的目录。premake4 在包含 prebuildcommands 调用的子目录中执行它们。

这是新的预期行为吗?如果是这样,它没有记录在我能找到的任何地方。只要不是错误,我不介意更正路径。

0 投票
1 回答
278 浏览

linker - 如何更改 premake 中的 libdirs 优先级?

我的 premake4.lua 文件中有以下几行

然后生成的 Makefile 将包含:

是否可以优先考虑我的自定义库目录?我的意思是我想要以下行:

我正在使用 premake4,但如果需要,我可以切换到 premake5。