问题标签 [buck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
buck - Buck 有平台名称宏吗?
Buck 有一些有用的宏,例如$(location :rule)
. 它是否还有用于获取平台名称的宏?
我需要根据构建目标的平台执行一些自定义逻辑。
c++ - buck 使用什么来实际构建 c++
我正在尝试为我的个人项目尝试降压,但查看文档,我无法找到构建阶段实际发生的情况。当我使用 cxx_ 选项设置项目时,buck 会为我生成一个 makefile 还是会生成 CMakeLists.txt?或者例如,在 Windows 上,我是否有机会创建 Visual Studio 项目文件?您也可以将我引导至文档,但我找不到此类信息。
android - Buck/OkBuck:DexGuard 集成不起作用
我一直在 Android Studio 中成功使用 DexGuard,Gradle
没有任何问题。我最近尝试过OkBuck
加快构建时间,这对我很有帮助。
虽然它能够为我构建调试和签名 APK,但是当我尝试使用 DexGuard 构建发布时,例如:
我收到以下错误:
提及 DexGuard 集成的细节可能是微不足道的,因为它是按照文档完成的,并且当我从 Android Studio 中构建或使用时工作正常./gradlew
,但这里是:
SomeApp/build.gradle:
SomeApp/app/build.gradle:
java - 在 BUCK 中将注释处理器作为插件加载
我正在探索使用 Buck for android 的注释处理器的使用。
当 java 库中的某些内容发生变化时,它不会每次都给我带注释的元素。我已经将它用作插件 -
android_library(..., plugins = ['//processor/src_apt'], annotation_processor_deps = [...])
就在src_apt
发生变化的时候,它返回了我所期待的元素。
有人在注释处理器和 Buck 上遇到过这样的问题吗?
android - 在 BUCK 中使用 java 测试访问 R.java
在将我们的构建工具迁移到 Buck 时,我们偶然发现了 Android 单元测试的以下问题:
我们对视图模型的测试需要访问 R.java 以断言正确的资源被引用。
我们使用了 java_test 规则,但似乎没有找到 R.java。有一个构建 .apk 的 robolectric_test ,但我们只希望类路径中的 R.java 文件用于单元测试。
没有 android_test 规则是否有原因。有这样做的计划吗?
我们浏览了代码,发现我们需要查看 AndroidLibraryGraphEnhancer 并构建 Android 资源。
有什么建议吗?
android - Buck - 名称“project_config”未定义。如何解决?
我不知道为什么,但巴克总是很难设置。我试图直接从 Facebook 页面为in进行入门教程。问题是当我尝试执行以下命令时出现错误:Android
macOS
buck build demo_app_android
错误:
注意:fbsamples/bucksamples
我在 GitHub 上克隆了存储库
这是BUCK
文件:
project_config
如果已定义,为什么会失败?
c++ - 是否有等效于 BUCK 的 header_namespace 的 cmake?
BUCK 构建工具允许我为库定义标头命名空间。例如,如果我有一个名为 libA 的库,其目录结构如下:
我可以将库上的 header_namespace 设置为,例如examples/liba
,这样在使用 libA 的单独项目中,我可以:
这很好,因为它允许我在我的项目中保持一个简化的目录结构,同时也让我的包含以一种更具可读性的方式进行组织。
CMake 是否提供这样的功能?我还没有找到类似的东西。我的目标是拥有 BUCK 和 CMake 构建文件,以便更容易在没有 java(BUCK 的依赖项之一)的系统上构建。
mingw - 如何使用 Buck 中的 mingw 编译器将共享的 cxx_library 链接到 cxx_binary?
我正在尝试使用 Buck 交叉编译 Windows 共享库和链接到此共享库的二进制文件。我在以下位置设置工具链路径.buckconfig
:
这是BUCK
文件:
foo.c
:
bar.c
:
bar.h
:
当我这样做时buck build //:foo
,我收到/usr/local/bin/i686-w64-mingw32-ld: unrecognised emulation mode: ap
错误(由于-map
选项传递给链接器,Mac Os 链接器有它,但 GNU 链接器没有,它有-Map
)。
当我添加
来.buckconfig
,我明白了java.lang.UnsupportedOperationException
at com.facebook.buck.cxx.WindowsLinker.origin(WindowsLinker.java:88)
。要么不支持,要么WINDOWS
意味着 msvc 工具。
.dll
是否可以使用 Buck构建 Windows 二进制文件和s?怎么做?(我不想在 Windows 上运行 Buck,用 mingw 或 mingw-w64 交叉编译就可以了)。
更新:我能够通过以下方式使其工作:
- 设置(文档
linker_platform = GNU
中.buckconfig
没有提到这样的选项,仅在issue中) - 设置
ld
为…-gcc
而不是…-ld
in.buckconfig
。直接调用时ld
,不支持gcc
前端调用时可用的部分参数。
但是,这不是正确的解决方案:它创建没有扩展名的 PE 文件,动态链接到具有.dylib
扩展名的文件。这个可执行文件可以用 Wine 运行,它会加载动态库,但这些设置仍然不正确。