require(gplots)
data(mtcars)
x <- as.matrix(mtcars)
heatmap.2(x, ylab = 'foo bar', xlab = 'bar foo')
par(cex.lab = 5.0)
heatmap.2(x, ylab = 'foo bar', xlab = 'bar foo')
此命令在工作目录中生成cpp文件$ python gencpp.py
。
我希望在构建之前在foo.cpp
中运行此命令,以便能够在bazel
的{{1}}属性中包含foo.cpp
。< / p>
我尝试过的事情:
cc_binary
声明输出&#39; external / somelib / foo.cpp&#39;不是由genrule创建的。这可能是因为genrule实际上没有创建此输出,或者因为输出是一个目录而且genrule是远程运行的(请注意,只有声明的文件输出的内容是从远程运行的genrules复制的。)
我知道有一个解决方案需要对srcs
进行一点修改,但这并不是我想要的。
答案 0 :(得分:3)
感谢@kristina the answer。
生成后,我必须将foo.cpp
复制到outs
目录。
genrule(
name = 'foo',
outs = ['foo.cpp'],
cmd = """
python gencpp.py
cp foo.cpp $@
""",
)
答案 1 :(得分:3)
此命令在工作目录中生成cpp文件
foo.cpp
。
我建议你改变它,以便:
然后你的genrule命令可以是:
python gencpp.py --outputFile=$@
或
python gencpp.py > $@
(我的一般个人偏好是针对后者,尽管在需要编写多个输出的情况下不能使用。)
分别
正如Ulf Adams所指出的那样:
Bazel并行运行多个动作,如果相同的规则是工具和应用程序的依赖关系,它可能会尝试同时运行,并且它们会相互覆盖,可能非常糟糕的结果。
因此,最好避免编写bazel不直接了解的输出文件。