gpt4 book ai didi

grpc - RUN_HAVE_STD_REGEX、RUN_HAVE_POSIX_REGEX 和 RUN_HAVE_STEADY_CLOCK 有什么用?

转载 作者:行者123 更新时间:2023-12-04 01:44:09 24 4
gpt4 key购买 nike

在 gRPC 中,为 arm 构建时,我需要禁用这三个变量:

-DRUN_HAVE_STD_REGEX=OFF
-DRUN_HAVE_POSIX_REGEX=OFF
-DRUN_HAVE_STEADY_CLOCK=OFF

我不是很清楚他们做了什么,所以我想知道:

  1. 为什么CMake在交叉编译时不能自动检测到它们?
  2. 禁用它们有什么影响,比如对支持它们的系统?有时会崩溃吗?在某些情况下降低性能?

因为它们不会被 CMake 自动检测到,如果我的用例在任何地方都能正常工作且没有重大问题,那么我将更容易始终禁用它们。

最佳答案

gRPC 在交叉编译时使用 CMake 的 try_run 自动检测平台是否支持某个特性。但是,有些变量需要手动提供。来自 the documentation (强调):

When cross compiling, the executable compiled in the first step usually cannot be run on the build host. The try_run command checks the CMAKE_CROSSCOMPILING variable to detect whether CMake is in cross-compiling mode. If that is the case, it will still try to compile the executable, but it will not try to run the executable unless the CMAKE_CROSSCOMPILING_EMULATOR variable is set. Instead it will create cache variables which must be filled by the user or by presetting them in some CMake script file to the values the executable would have produced if it had been run on its actual target platform.

基本上,它是说 CMake 不会尝试在构建机器上运行已编译的可执行文件,除非手动指定一些测试结果(本应在目标机器上运行的测试)。以下测试通常会导致问题:

-DRUN_HAVE_STD_REGEX
-DRUN_HAVE_GNU_POSIX_REGEX
-DRUN_HAVE_POSIX_REGEX
-DRUN_HAVE_STEADY_CLOCK

希望这能回答您的第一个问题。我不知道如何回答你的第二个问题,因为我总是手动设置这些变量以匹配我为之编译的任何系统的特性。

关于grpc - RUN_HAVE_STD_REGEX、RUN_HAVE_POSIX_REGEX 和 RUN_HAVE_STEADY_CLOCK 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55992930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com