- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 genrule
输出一个包含 C++ 头文件的目录。我还有一个 cxx_library
,它使用 genrule
的输出。 cxx_library
的 headers
字段如下所示:
...
headers = [
':my-headers',
],
...
问题是我的 C++ 源文件包含这样的 header :
#include "my_header.h"
但是 Buck 是这样准备暂存区的:
my-cxx-library#default,private-headers/out
out
是包含我生成的 header 的文件夹的别名。
所以为了使用标题,我必须像这样包含它们:
#include "out/my_header.h"
该库不是我自己的,所以我不想更改源代码。相反,我想使用类似 subdir_glob
的东西来包含 :my-headers/out
中的所有内容。
我试过这个:
...
headers = subdir_glob([
(':my-headers/out', '**/*.h'),
]),
...
但是,似乎以这种方式完成后,字符串 :my-headers
并未解析为 :my-headers
的输出路径。
buck中有函数吗可以将规则扩展到它的输出路径?
最佳答案
这isn't trivially possible today ,但您可以使用一种解决方法:
genrule(
name = 'headers',
cmd = 'generate_headers.py --outdir=$OUT'
out = 'headers-dir',
)
genrule(
name = 'generated_header_A.h',
cmd = 'cp $(location :headers)/genereated_header_A.h $OUT',
out = 'generated_header_A.h',
)
然后,在您的cxx_library
中,您只需通过引用以下位置来声明您的headers
:
headers = {
'some_namespace/header_A.h': ':generated_header_A.h',
},
以上代码假定所有这些都在同一个 build file 中, 但如果不是,您只需要使用完全合格的 build target相反。
关于c++ - 在 Buck 中,如何扩展 genrule 输出目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41612753/
巴克有一些 useful macros ,例如 $(location :rule)。它是否也有获取平台名称的宏? 我需要根据构建目标的平台执行一些自定义逻辑。 最佳答案 它支持,但它只支持 nativ
我正在尝试使用 buck build leveldb . LevelDB 有一个 script that generates some platform-specific flags .我可以使用 g
尝试按照这些说明 (https://buckbuild.com/setup/getting_started.html) 构建 buck 示例项目时,我收到以下错误。 BUILD FAILED: No
我正在尝试使用 buck 构建 Eigen .不幸的是,Eigen 有一个不寻常的标题结构: Eigen/src/Cholesky/LLT.h Eigen/src/Cholesky/LDLT.h Ei
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 3年前关闭。 Improve t
如标题所述 - 我想使用带有 Buck 的自定义 Java 注释处理器(例如 Dagger 1/2)。查看文档没有发现任何与 Java(或 Android)相关的构建规则的明显注释处理相关属性,而且我
我正在尝试使用 Buck 添加一个预构建的静态库作为我的 iOS 项目的依赖项。使用 prebuilt_cxx_library,我可以通过 CLI 让它正常工作,但是当它生成 .xcodeproj 文
与此票相关Parameters for annotation processors are disabled and undocumented 我们如何使用 annotation_processors
我正在为我的个人项目尝试降压,但查看文档时,我无法找到构建阶段实际发生的情况。当我使用 cxx_ 选项设置项目时,buck 会为我生成一个 makefile 还是会生成 CMakeLists.txt?
我正在尝试将项目从 Buck 迁移到 bazel,并寻找可用于 genrules 的 $(classpath) 宏的等效项。 bazel 中是否有类似的东西可以获取给定 java_library 的类
我一直在研究将 Buck 用于一个大型项目,但我想知道是否有与 gradle 的构建变体和产品风格等价的非常有用的东西。 最佳答案 对于调试与发布版本(即 BuildConfig.java 中的常量)
我正在玩本地 react 。我读了很多关于buckbuild系统。现在我正在尝试将这两者联系起来(以充分发挥核素编辑器的潜力)。 有没有人告诉我如何生成 buckconfig现有 React Nati
我正在尝试写一个 homebrew我的 Java 项目的公式。我正在使用buck构建项目,需要从 Maven 下载一些 jar 文件。 例如,我的 BUCK 文件具有: remote_file(
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
根据 this thread , Buck 目前没有完整的多 dexing 支持——至少在“官方”解决方案如何解决多 dexing 的意义上是这样。 我感到困惑的是:如果我只去 Exopackage
我正在尝试根据最大小时数将一个事件放入多个存储桶中。在我的示例中,Pin 这里的最大小时数为 1938。因此,仅通过我的查询将其存储到 2000 范围。但理想情况下,由于大头针的使用时间已达到 193
大家好我的开发人员, 我正在尝试从 Gradle 切换到 Buck,但在使用 Dagger 和 Butterknife 进行设置时遇到问题,因为它们需要注释处理。 我找到了一些链接和教程,但它们已经有
如果我有如下测试 TEST(One, A) { ... } TEST(Two, B) { ... } 如何使用buck test 只运行One.A?我希望能够做到 buck test somethin
我正在尝试使用 Buck 构建测试在 Travis CI 服务器上使用 buck test C++ 目标(通过 GitHub),但有两件事我无法弄清楚。 我必须在 Travis 服务器上安装 Buck
我在自己的 C++ 项目中使用 Buck,但我依赖于使用 CMake 构建的第三方库。 CMake 文件很复杂,所以我认为在 Buck 中重新创建他们的 CMake 文件不切实际。相反,我想从 Buc
我是一名优秀的程序员,十分优秀!