问题标签 [build-rules]

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 投票
2 回答
1639 浏览

xcode - 构建规则“输出文件”中的表达式?

你能在 Xcode 的构建规则的“输出文件”部分包含表达式吗?例如:

$(DERIVED_FILE_DIR)$(echo "/dynamic/dir")/$(INPUT_FILE_BASE).m

具体来说,当使用 j2objc 翻译 Java 文件时,生成的文件会保存在基于 java 包的子文件夹中(例如。$(DERIVED_FILE_DIR)/com/google/Class.[hm])。这是没有 using --no-package-directories,由于不同包中的文件名重复,我无法使用它。

问题出在Output Files中,因为 Xcode 不知道如何在正确的位置搜索输出文件。默认位置是$(DERIVED_FILE_DIR)/$(INPUT_FILE_BASE).m,但我需要执行字符串替换来插入正确的路径。但是,添加 as 的任何表达式$(expression)都会被忽略,因为它从未存在过。

在此处输入图像描述

我还尝试从自定义脚本中导出一个变量并在输出文件中使用它,但这也不起作用,因为输出文件SCRIPT_OUTPUT_FILE_X在自定义脚本运行之前被转换为。

在此处输入图像描述

0 投票
2 回答
1543 浏览

xcode - Xcode“构建规则”做什么?

我是 Xcode 的新手。从 Xcode 中的“目标”中,我可以看到有一个名为“构建规则”的选项卡。

我想知道这个标签是做什么的?

谢谢

0 投票
1 回答
512 浏览

visual-studio-2013 - Custom Build Rule fails after converting to VS2013

I need to integrate a legacy VS2008 project into my VS2013 solution. This project uses some custom build rules which initially worked after converting the .vcproj to a .vcxproj. However, when doing a fresh checkout of the project including the .vcxproj, the project file can no longer be opened.

I've tracked it down to this issue:

The project file references a couple of custom build rules like this:

However, the ms_mc.props file is not present, but there is a ms_mc.rule file. If I convert the VS2008 solution with VS2013 (and assumably also if I opened it in VS2008, which I don't possess), the ms_mc.props file (plus a .targets and a .xml file) is created. However, if I delete that file and open the converted VS2013 project, the file does not get created.

I realized, in the old .vcproj, the corresponding lines are

Why does VS2008 reference the .rule file and VS2013 imports the .props file without specifying the .rule file? And more importantly: How can I make this work again?

The .rule and .props file are added for reference


ms_mc.rule:

ms_mc.props (after Conversion to VS2013):

0 投票
1 回答
766 浏览

makefile - 为什么不使用 partialImage.o 来生成 vxWorks 图像,而不是将所有目标文件列出到链接器

来自 rules.vxWorks:

在我的一个项目中,我将partialImage 和vxWorks 分离为单独的目录级别,因为我想在parttailImage.o 中添加更多内容。

所以我的问题是,在 vxWorks 目标中,我可以只指定 partialImage.o 而不是 PRJ_OBJS 吗?

为什么现有的 vxWorks 规则不这样做呢?

0 投票
1 回答
432 浏览

target - 如何移动 bazel 构建目标?

所有 bazel 规则都将构建目标放在特定位置。
我可以通过 找到目标bazel-bin/,但是它们都递归地分散在我不关心的其他非目标文件中。

如何编写将所有程序放在一个bin/目录中的构建规则?

我是否想编写自己的程序来遍历bazel-bin/所有程序并将其同步到类似的东西usr/local/bin,或者我可以做一个查询吗?我希望它只是构建规则的一部分,但默认规则似乎不支持这样的东西。而且我不喜欢必须运行构建,然后运行第二步,将我的所有二进制文件同步到同一个文件夹的想法。

推荐的方法是什么?想要所有程序和所有测试在同一个特定目录中是很常见的。

0 投票
1 回答
116 浏览

bazel - 如果我的 bazel 目标生成未在其输出中指定的文件,我会出错吗?

在一个.bzl文件中,
我指定了一个程序来生成一些代码。它看起来像这样:

这工作正常,
但问题是该工具可能会生成比outs.
我正在尝试找到一种方法,如果生成的文件多于指定的文件,则让 bazel 停止构建,或者让输出自动生成所有内容。

0 投票
2 回答
89 浏览

validation - CakePHP 3 - 切换 BuildRules 集

我正在制作一个应用程序,用户可以在其中创建活动,其他用户可以订阅它们。新活动必须通过管理面板批准,只有管理员可以访问。

被批准的活动应该被锁定,这样他们的用户就不能改变它们。只有通过管理面板批准的活动才能进行编辑。

为了实现这一点,我们制作了这个 buildRule:

(BuildRule 而不是验证规则,因为验证也应该在approved字段未被修改时启动,因此不是验证的一部分。)

上面给出的规则也阻止管理员修改活动,所以我的问题是:

您可以在表中的 builRules 之间切换,就像您可以更改验证方法一样?

0 投票
1 回答
146 浏览

ios - 自定义构建阶段可以在编译之前修改文件吗?

我有一个同时使用 Objective C 和 Swift 的 iOS 应用程序。在包含 Swift 代码之前,该应用程序使用了一个使用 c 宏的记录器。出于安全原因,c 宏随后实现了一种机制,该机制在构建发布版本时删除日志,并且运行良好。

当 Swift 代码启动时,在 c 宏之上创建了一个 Swift 包装器。所以现在来自 Swift 代码的日志实际上调用了 swift 包装器,然后它调用了 c 宏。这是不安全的,发送到 swift 包装器的参数也应该被隐藏,否则攻击者可能仍然会提取一些数据。

我正在考虑运行一个自定义构建阶段(shell 脚本),它会在创建发布构建之前删除所有函数调用,但我怀疑这是可能的。

所以我的问题是:可以添加自定义构建阶段(运行脚本阶段)甚至构建规则在编译之前修改文件吗?还是我必须编写一个脚本,每次发布前我都需要手动运行?

谢谢。

0 投票
1 回答
107 浏览

bazel - bazel 可以打印构建规则的层次结构吗?

Bazel 规则可以组成其他的 bazel 规则。例如:

在这里我们看到了cpp_library用途native.cc_library
有没有办法使用 bazel 查询来打印这种关系信息?

您可以想象随着项目规模的增长和许多可用的规则,想知道哪些规则被哪些其他规则使用是多么困难。

0 投票
2 回答
133 浏览

php - 如何将当前用户 ID 传递给 CakePHP 模型的 buildRules 方法

我将 AuthComponent 与 CakePHP 3.8 一起使用,现在我需要在 Model buildRules 方法中执行一些逻辑,但为此我需要获取当前用户 ID。有什么方法可以在不使用诸如直接从会话访问之类的技巧的情况下传递/检索它。我知道可以通过控制器的验证器传递 id,如 CakePHP 的文档 https://book.cakephp.org/3/en/core-libraries/validation.html#using-custom-validation-rules中所述

它适用于验证,但是,我无法从构建规则内部访问验证器。

当我按照此处所述进行操作时,我得到一个空对象。 https://book.cakephp.org/3/en/orm/validation.html#using-validation-as-application-rules

似乎我能够附加新的验证规则,但无法检索“通过”提供程序来获取用户 ID。

这似乎是一件微不足道的事情,但我花了好几个小时试图以正确的方式获取 id。