我开始使用Bazel作为我的C++项目构建系统.
但是我遇到了以下问题:
我正处于自动生成file.hpp file.cpp(文字编程)的场景中.
要重现我的问题,可以简单地使用这个最小的生成器:
-- file.sh --
#!/bin/sh
echo "int foo();" >> file.hpp
echo "#include \"myLib/file.hpp\"\n\nint foo() { return 2017; }" >> file.cpp
Run Code Online (Sandbox Code Playgroud)
我的项目回购是:( WORKSPACE是一个空文件)
??? myLib
? ??? BUILD
? ??? file.sh
??? WORKSPACE
Run Code Online (Sandbox Code Playgroud)
BUILD文件是
genrule(
name = "tangle_file",
srcs = ["file.sh"],
outs = ["file.cpp","file.hpp"],
cmd = "./$(location file.sh);cp file.cpp $(@D);cp file.hpp $(@D);"
)
cc_library(
name = "file",
srcs = ["file.cpp"],
hdrs = ["file.hpp"],
# deps = [":tangle_file"],
visibility = ["//bin:__pkg__"],
)
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
问题(A),处理genrule()部分:
我必须使用的事实
cmd = "./$(location …Run Code Online (Sandbox Code Playgroud)