问题标签 [abseil]
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.
c++ - 包含 Bazel 标头时如何允许角“<>”括号?
我的项目正在从CMake过渡到Bazel,我通过将Abseil的快照检入到我们存储库中的顶级目录中来包含它。我需要在过渡期间支持这两个构建系统,所以我创建了文件并注意到需要禁用很多警告才能编译 Abseil 标头。third_party/
CMakeLists.txt
对于 CMake,这没关系,因为我可以通过使用#include <absl/strings/str_cat.h>
语法来包含使用它们的标头。这告诉我的编译器它是一个系统头文件并忽略警告,所以我不必全局禁用它们。
但是,对于 Bazel,我收到此错误:
错误:找不到包含“absl/strings/str_cat.h”的文件;改用“引号”
有没有办法告诉 Bazel 允许<>
-style 包含?是否有另一种方法可以仅针对这些标头禁用警告而不为整个项目禁用它们?
c++ - 令人惊讶的基准测试结果
在观看了 Titus Winters 的“Live at Head”演讲后,他提到 StrCat() 是人们最喜欢的功能之一,我决定尝试实现类似的东西,看看我是否可以击败 std::string::append (或 operator+ ,我认为它在内部使用 append )就运行时性能而言。我的理由是,作为可变参数模板实现的 strcat() 函数将能够确定其所有类似字符串的参数的组合大小,并进行一次分配来存储最终结果,而不必在以下情况下不断重新分配operator+,它不知道调用它的总体上下文。
但是,当我在quick-bench上将我的自定义实现与 operator+ 进行比较时,我发现我的 strcat() 实现在使用-std=c++17 -O3
. 我在下面包含了快速工作台代码以供参考。
有谁知道是什么导致了这里的放缓?
python - 执行从 python gflags 到 yaml 并返回的转换的惯用方式是什么?
我正在为我的项目使用absl-py的 python gflags。
它们是指定配置的便捷方式,但我经常喜欢运行相同的配置,并且保存命令行调用并不可取,因为它们难以阅读和维护。
我希望能够维护指定标志值的 YAML 文本文件。例如,一个程序可能被调用为
也可以调用为
的内容在config.yaml
哪里
类似地,在第一次调用的情况下能够构造上面的文件会很好。
最地道的方法是什么
- 接受命令行上的配置文件路径并覆盖所有
absl.flags.FLAGS
值? - 将
absl.flags.FLAGS
实例转换为文本表示(最好是 YAML),然后可以使用 (1) 重新调用?
编辑. 似乎有一种简单的方法来接受配置文件,使用--flagfile
,它应该只在新行中包含每个标志的值。但是,我的问题 (2) 仍然存在,我如何才能恢复这样的文件?目前唯一的解决方案似乎是flags.FLAGS
手动抓取和字符串化每个标志值。
bazel - Bazel 可以使用多个 WORKSPACE 文件吗?
假设我正在使用特定的CROSSTOOL
+ 工具链,例如this one,并且我想使用该工具链编译第 3 方库,例如abseil。是否可以在不修改 3rd 方库的情况下这样做WORKSPACE
?
如果我必须修改工作区,local_repository()
为工具链存储库添加规则似乎足够合理。但在这种情况下,除非我还从工具链工作区复制new_http_archive()
条目(它会拉入实际的工具链二进制文件),否则我无法让它工作。需要添加 local_repository 的依赖项对我来说似乎很奇怪 - 他们不应该被拉进来吗?
我可以对工具链 repo 进行更改,但希望不必修补或以其他方式修改 3rd 方包。更改编译器似乎不需要修改要构建的包。
tensorflow - 从文件加载 TensorFlow FLAGS(TF 版本 > 1.4)
我想将FLAGS
( tf.app.flags.FLAGS
) 存储在一个文件中并稍后重新加载它们。在 TensorFlow 1.4 之前,我使用以下代码重新加载:
从 TensorFlow 1.5 开始,底层实现发生了FLAGS
变化。有人知道用存储在文件中的值更新 FLAGS 的方法吗?
c++ - 这个 absl::StrCat 错误发生在 Abseil 或 MSVC 的什么地方?
我从 char 数组创建 string_view
如果你写:
MSVC 错误:
除了operator""sv
在 MSVC 中似乎缺少
之外,第 18 行和第 19 行有一个共同点:
错误:
当我在我的 VC BuildTool 上编译时(使用 clang 8 目标 msvc),它在这里提供了额外的线索。
std::_String_view_iterator<std::char_traits<char> >
在当前的 MSVC 中,从to const std::basic_string_view<char, std::char_traits<char> >::const_pointer
(aka ) 的转换似乎const char *const
是不可能的include\xstring
Clang 和 gcc 对此很满意。
更新
根据Algirdas Preidžius和Hans Passant下面的评论,在将 Godbolt 编译器从 MSVC 2017 RTM 更改为 MSVC Pre 2018 后,sv
文字现在一切正常。
还有一个上面提到的错误。
错误
bazel - 使用 bazel 在 windows 上构建 abseil
我正在尝试使用 bazel 在 Windows 上构建绳索,
我试图构建的版本是:
我正在使用下一个 bazel 命令:
我得到这个输出:
我看到在 abseil-cpp-20181200 中创建了一些文件夹
这些文件夹是空的。
我使用的系统是windows7 64位
如果需要更多信息,请告诉我,我会提供,不胜感激
c++ - abseil flat_hash_map 是否支持并发?
Abseil是由 Google 维护的开源 C++ 库。它旨在在性能和/或功能方面与 C++ std 互补。几乎abseil::flat_hash_map
是的对应物。我的问题是:是否可以使用多个线程或任何其他 abseil 的哈希映射?abseil
std::unordered_map
abseil::flat_hash_map
python - 在 GCP 上正确处理日志级别
我在 GCP 实例上运行一些 TensorFlow 代码。生成的所有日志都保存在 StackDriver 中,但大部分都保存为“错误”消息。
正如您在此处看到的,我使用logging.info
(来自 Python 库)记录了 GPU 可用性,但它是输出的stderr
,因此被 StackDriver 视为一个"ERROR"
(用橙色感叹号标记)。
和logging
中的三个导致日志消息显示为错误消息。absl.logging
tf.print
有没有办法配置 TF 记录器以避免stderr
输出,或者让它与 GCP StackDriver 一起表现得很好?
ios - 安装了未指定的 Cocoapod 库
我最近在 Podfile 中添加了一行来使用 Firebase 的动态链接。
但是,当我在终端中使用该命令pod update
时,它意外安装了一个库:
这让我很紧张,因为它安装了一个名为abseil的奇怪库。当 I 时cat Podfile.lock
,它有很多不同的组件:
这个图书馆是怎么回事?它似乎不是 Firebase 动态链接的一部分。它很长,看起来对我的项目来说不是必需的。Firebase 是否突然决定将这个庞大的库包含给所有人?我的另一个带有 Firebase 和动态链接的项目即使在我之后也没有这个 abseil 库pod update
。