【问题标题】:Automatically copy executable after build with Bazel使用 Bazel 构建后自动复制可执行文件
【发布时间】:2018-08-11 19:06:25
【问题描述】:

假设我有以下目录布局:

.../
  root/
    bin/
      sdl.dll
    src/
      main/
        main.cpp
        BUILD
      WORKSPACE

还有一个 BUILD 文件,上面写着:

cc_binary(
    name = "test",
    srcs = ["main.cpp"]
)

而我的构建命令行是:

bazel build //main:hello-world --symlink_prefix=/

我需要添加什么到我的 BUILD 文件中,以便将 test.exe(和 test.pdb,如果适用)复制到 bin(与 sdl.dll 一起)?

我查看了this page 并尝试使用--output_base,但比我想要的要多。

P.S:在“Visual Studio”术语中,我希望将 $(OutDir) 或 postbuild 从 $(OutDir) 更改为 ..\bin

【问题讨论】:

    标签: c++ bazel


    【解决方案1】:

    您不能直接对 Bazel 执行此操作。 Bazel 出于密封原因不会写入您的源目录。解决方法是使用手动运行或使用bazel run 的构建后步骤脚本。

    另见:How to write files to current directory instead of bazel-out

    【讨论】:

    • 我读到了不写入源目录的信息,但 bin 文件夹是 source 的兄弟,所以我认为我会没事的?
    • output_base 基本上是所有工作完成的地方,它不会写入此目录之外的文件或它不拥有的目录以防止污染。但是,为方便起见,在 WORKSPACE 文件所在的工作空间的根目录中有 bazel-bin 符号链接。
    • 也就是说,有一些例外,例如 repository_cache,它在工作空间之间存储和共享缓存的外部依赖项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2011-03-08
    • 2012-11-10
    • 1970-01-01
    相关资源
    最近更新 更多