- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Waf 中,我如何创建多个可以并行运行的自定义任务(使用 --jobs=JOBS)?
Sources = ["C:\\src1.c", "C:\\Mod1\src2.c", ... 30pcs] # one per call
Incl_Paths = ["Mod1". "Mod1"] # list all of them in all call
INCL_ST = "-I%s" # how to format an include path in an argument
Ext_out = "_loc" # output file extension
目标:
C:\\LOC.exe -IMod1 -IMod2 C:\\src1.c > build\\src1.c_loc //or better src1_loc
C:\\LOC.exe -IMod1 -IMod2 C:\\Mod1\src2.c > build\\src2.c_loc //or better src2_loc
...
我无法让它工作
def build(bld):
for i in Sources:
bld.new_task_gen(
source = i,
rule='C:\\LOC.exe ${INCL_ST:Incl_Paths} ${SRC} > ' + i + Ext_out,
)
我也无法提取exe
# find_program(self, filename, path_list=[], var=None, environ=None, exts=''):
cfg.find_program("C:\\LOC.exe", var='LOC')
更改自:
rule='C:\\LOC.exe ...'
收件人:
rule='${LOC} ...'
最佳答案
像这样的东西应该适用于 waf 1.7:
from waflib.Task import Task
from waflib.TaskGen import extension
Ext_out = "_loc" # output file extension
def configure(conf):
# loc.exe must be in the system path for this to work
conf.find_program(
'loc',
var = "LOC",
)
conf.env.Incl_Paths = ["Mod1", "Mod1"]
conf.env.INCL_ST = "-I%s"
@extension('.c')
def process_loc(self, node):
out_node = node.change_ext(Ext_out)
tsk = self.create_task('loc')
tsk.set_inputs(node)
tsk.set_outputs(out_node)
class loc_task(Task):
ext_in = ['.c']
ext_out = ['_loc']
run_str = "${LOC} ${INCL_ST:Incl_Paths} ${SRC} > ${TGT}"
def build(bld):
bld(source = ["src1.c", "src2.c"])
好吧,它在 linux faking loc 上对我有用 ...
关于c - Waf:创建自定义并行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22466329/
假设我在 /mydir/a/b 中有 x.y 文件(在 Linux 上) 当我运行 waf 时,它没有找到该文件。 def configure(context): pass def build
我正在为我的项目使用 Waf 构建系统。我的项目中有一些依赖项,我并不总是希望对其进行链接和编译。我想知道是否有一种方法可以将额外的参数传递给 Waf 配置和 Waf 安装脚本,我可以在 wscrip
每当我调用“waf clean”时,waf 最终都会清理构建中的所有内容。我想有办法告诉 waf 只清理特定的目标。这样,每当我想再次运行所有单元测试时,我就不必重建所有内容。 例如, 如果我有以下文
我正在使用 Waf 构建一个项目。它有几个第三方依赖项,我想从我的主要 wscript 构建每个依赖项。我的项目是这样组织的: /boost/ /gtest/ /source/ /waf /wscri
我有一个添加了一些选项的 waf 脚本,因此我使用 waflib 中的 Options。 一个最小的工作示例是: from waflib import Context, Options from wa
我想将一个 waf 任务的 target 用作另一个 waf 任务中的 source,但这并没有按预期工作。 一个简单但完整的例子:我添加了两个任务( t_1 , t_2 )我想添加为功能并通过 be
我想使用 waf 触发生成文件来构建其他库。为此,我创建了以下任务: def build(bld): def run(self): bld_dir = self.generat
我想安装使用命令 bld.shlib(...) 构建的库进入 /lib ,其中 arch_suffix 可以是 64 或根据架构为空。 我怎样才能做到这一点? 如果不可能,那么我如何明确指定这个后缀?
我正在使用waf来构建C程序。我想在配置阶段检查是否存在特定的头文件。有没有办法做到这一点? 最佳答案 嗯,有点谷歌搜索找到了我的问题的答案:您可以在Configuration对象上使用check方法
在我的 wscript 中,我在 apply_link 方法之后运行了一些自定义任务(dummy),这工作正常。 在这个dummy任务完成后,我想收集我所有的输出文件(让它成为*.dll,*.exe、
我已经克隆并构建了 waf脚本使用: ./waf-light configure 然后构建我的项目(由 Gomspace 提供)我需要添加 waf和 eclipse.py到我的路径。到目前为止,我还没
我已经设置了带有 WAF 和一些 Web 应用程序的应用程序网关 V2。我还为 Web 应用程序设置了自定义域,并且网关的监听器正在重定向到属于网关正在监听的域的 Web 应用程序。 假设我想阻止外部
我有以下代码片段,用于将文件按原样复制到构建目录: for m in std_mibs: print("Copying", m) bld(name = 'cpstdmib'
class superfoo(Task.Task): def run(self): self.generator.bld.fatal("Oh noes!") 有没有办法退出
我在 Windows 中使用 waf,但我不知道如何使用 boost 工具。 我尝试了 waf update,但它显示以下内容: 无法在远程存储库中找到该工具“更新”成功完成(0.597 秒) 如何在
我在 waf 中有一个目标,它依赖于多个其他文件。有一个程序列出那些依赖项,我想使用它,并传递给 waf。即,如果我有一个目标 T,那么是一个列出T 的所有依赖项的程序。但我不清楚如何通过这个到 bl
在 Waf 中,我如何创建多个可以并行运行的自定义任务(使用 --jobs=JOBS)? Sources = ["C:\\src1.c", "C:\\Mod1\src2.c", ... 30pcs]
我有一个文件,我想在它通过 python 脚本推送后发送到构建目录。我将如何在 waf 中执行此操作? 例如,如果我有这样一个文件: VERSION=%%VERSION%% DATADIR=%%DAT
是否有更好/更短的方法来创建这两个可处理多个文件的任务?我更喜欢 new_task_generator 而不是神秘的类。 Files = ["src1.c", "src2.c"] for Fi
我正在尝试配置 Azure 应用程序网关 WAF,并将后端池设置为不同 Azure 租户中的虚拟机,使用端口 443 上的公共(public) IP 地址。所有 SSL 证书均已正确配置。但是,我在通
我是一名优秀的程序员,十分优秀!