小编And*_*iad的帖子

从另一个分支获取更改,而不会影响当前分支

是否有一种简单的方法可以从另一个分支获取更改而无需合并或重组.并保持这些更改未跟踪(对于新文件)或不进行提交(对于现有文件)?

git

9
推荐指数
4
解决办法
8619
查看次数

在C中自动刷新stdout缓冲区的规则是什么?

我只是好奇应该满足哪些条件自动刷新stdout缓冲区.

首先,我很困惑这个伪代码不会在每次迭代时打印输出:

while (1) {
    printf("Any text");
    sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

但如果我添加换行符,它会.

经过几次实验,我发现在我的机器上stdout缓冲区被刷新:

  1. 当我输入1025个字符或更多字符时;
  2. 当我读到标准时;
  3. 当我将换行符添加到stdout时;

第一个条件是完全清楚的 - 当缓冲区已满时,应该刷新它.第二个也是合理的.但为什么换行符导致潮红?其他隐含的条件是什么?

c buffer stdio

8
推荐指数
3
解决办法
1887
查看次数

如何将TensorFlow Lite构建为静态库并从单独的(CMake)项目链接到它?

通过将源代码添加到,我已经成功构建了一个运行TF Lite模型的简单C ++应用程序tensorflow/lite/examples,这与官方C ++ TF指南建议的完整TF 相似。现在,我想将其构建为一个静态链接到TF Lite的单独项目(共享库),并使用CMake作为构建系统。

我试图向自己添加一个自定义目标CMakeLists.txt,该目标将使用Bazel构建TF Lite:

set(TENSORFLOW_DIR ${CMAKE_SOURCE_DIR}/thirdparty/tensorflow)
add_custom_target(TFLite
    COMMAND bazel build //tensorflow/lite:framework
    COMMAND bazel build //tensorflow/lite/kernels:builtin_ops
    WORKING_DIRECTORY ${TENSORFLOW_DIR})
Run Code Online (Sandbox Code Playgroud)

我之所以选择这些Bazel目标,是因为其中的BUILD文件tensorflow/lite/examples/minimal将它们作为依赖项,并且当我在TF存储库中使用Bazel构建代码时,它们对我有用。不确定是否足够。

然后,我手动收集include dirs(具有丑陋的临时硬编码路径)和libs:

set(TFLite_INCLUDES
    ${TENSORFLOW_DIR}
    ~/.cache/bazel/_bazel_azymohliad/ec8567b83922796adb8477fcbb00a36a/external/flatbuffers/include)

set(TFLite_LIBS
    ${TENSORFLOW_DIR}/bazel-bin/tensorflow/lite/libframework.pic.a)

target_include_directories(MyLib ... PRIVATE ... ${TFLite_INCLUDES})
target_link_libraries(MyLib ... ${TFLite_LIBS})
Run Code Online (Sandbox Code Playgroud)

通过这种配置,我在链接期间获得了许多未定义的对TFLite内容的引用。我检查了nm,这些符号确实在中丢失了libframework.pic.a,我.o在Bazel输出的各种文件中找到了其中的一些。手动选择所有这些.o文件似乎是错误的。

因此,是否可以像我想要的那样从CMake很好地链接到TF Lite?也许有一些神奇的bazel query include_dirs(//tensorflow/lite:framework)命令可以为我提供所有必要的包含目录的路径,以及一个类似的库链接命令,以便我可以将此信息传递给CMake?

c++ cmake bazel tensorflow tensorflow-lite

5
推荐指数
1
解决办法
1604
查看次数

标签 统计

bazel ×1

buffer ×1

c ×1

c++ ×1

cmake ×1

git ×1

stdio ×1

tensorflow ×1

tensorflow-lite ×1