- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
运行配置脚本后,我得到了一系列显示“已缓存”的输出。例如:
checking for gcc... gcc
checking for gcc... (cached) gcc
...
checking dependency style of gcc... gcc3
checking dependency style of gcc... (cached) gcc3
为什么在这里输出两次 gcc:一次是“gcc”,另一次是“(cached) gcc”?该脚本似乎正在进行两项检查。我以为脚本只会检查缓存中的变量以加快执行速度。
另外,这些缓存文件存储在哪里?根据 autoconf 文档,它说:
By default, configure uses no cache file, to avoid problems caused by accidental use of stale cache files.
因此,某些“检查”似乎默认由配置脚本缓存。我试过运行“--config-cache”,并创建了文件“config.cache”。
我还在我的配置脚本中运行了这个:
# optimization flags
if test "x$ac_cv_prog_gcc" = xyes; then
AC_MSG_CHECKING([AC_CV_PROG_GCC])
AC_MSG_RESULT("$ac_cv_prog_gcc")
fi
尽管在 config.cache 中找不到变量“ac_cv_prog_gcc”,所以我假设这些缓存变量存储在其他地方。这些文件位于何处?
最佳答案
Why is it outputting gcc twice here: one with "gcc" and the other "(cached) gcc"? It appears that the script is doing two checks.
脚本遇到两个请求进行相同的检查。它足够聪明,可以记住第一次的结果,而不是第二次执行实际检查。因为这样做,它第二次报告结果是从其结果缓存中提取的,而不是 de novo 计算的。即使它不记录缓存文件,它也会在脚本运行期间在内存中缓存结果。
一般来说,它不能完全抑制重复检查,因为通常有与检查相关联的代码来处理结果,并且对于每个冗余检查来说不一定是相同的代码。
I thought the script would just check the cache for variables to speed up execution.
是的,这正是它正在做的。它正在报告它已经这样做了,以及结果。如果它使用了在上一次运行期间缓存的值,或者手动输入到缓存中,它会通知您,并且如果在检查之间对缓存进行了操作,它会提醒您。如果 configure
失败,它还可以帮助您更好地跟踪发生故障的位置。
Also, where are these cached files stored? According to the autoconf documentation, it says:
By default, configure uses no cache file, to avoid problems caused by accidental use of stale cache files.
所以看起来某些“检查”确实被配置脚本缓存了 默认。
默认情况下,不会永久缓存检查。缓存的每个结果至少在 configure
运行期间缓存,但是,如果启用缓存文件,则它用于持久缓存存储。
I have tried running "--config-cache", and the file "config.cache" get created.
I also ran this in my configure script:
# optimization flags
if test "x$ac_cv_prog_gcc" = xyes; then
AC_MSG_CHECKING([AC_CV_PROG_GCC])
AC_MSG_RESULT("$ac_cv_prog_gcc")
fiThe variable "ac_cv_prog_gcc" is nowhere to be found in config.cache though, so I am assuming these cached variables are stored elsewhere.
我不清楚您希望通过它实现什么。如果你想手动输入一个值到缓存中,那么你应该使用 the AC_CACHE_VALUE
or AC_CACHE_CHECK
macro为了这个目的。您似乎没有这样做,您没有看到缓存的变量也就不足为奇了。
此外,您不太清楚您是如何使用 --config-cache
选项的。该选项及其兄弟在每次运行的基础上应用以控制是否使用持久缓存(读取和写入)。仅仅存在一个缓存文件,无论名称如何,都不足以让您的 configure
脚本在任何给定运行中实际使用它。
Where are these files located?
你已经在看它了。如果您对configure
脚本使用--config-cache
或-C
选项,那么缓存将存储在config.cache 中
。如果您改为使用 --cache-file=XXX
选项,则缓存将存储在您命名的文件中。
但总的来说,请注意 (persistent) caching is probably not what you are looking for .如果您正在考虑满足特定需求,那么我建议您在一个单独的问题中直接询问该需求。
关于autotools - 运行配置后缓存的变量存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53272185/
我正在编写一个小型库,并希望使用带有 automake 1.11 的 autotools 来访问它。唯一有趣的结果是库 libfoo.so。 我为库编写了一个单元测试,我希望在 make 过程中或在运
我有一个自动工具项目。如果用户在构建过程中进行了配置,我希望从项目中排除一些文件。例如,如果构建配置了 --no-gui ,则与 GUI 相关的文件不会包含在构建中。 autoconf 中此类标志的标
我需要将 libmagic 链接到我使用 autotools 构建的项目。 我目前的解决方案是:configure.ac中的LIBS+="-lmagic" 但我认为实现此目的更合适的方法是在 conf
我有一个用 C 编写的相当大的程序。它跨越多个文件,并进行了一些重组以试图弥补平台问题。具体来说,我有不同操作系统、体系结构和编译器的头文件,这些头文件定义了用于处理事物的宏。例如,-v flag 打
我正在编译一个 基于 autotools C 的项目 我收到了一些警告和错误。它们显示如下: foo.c:123: warning: some message 我希望它们显示如下: /full/pat
我需要将“-Wall -Werror”设置为项目中所有源文件的 CPPFLAGS。有没有办法在自动工具中做到这一点? 我在 configure.ac 中尝试了以下内容: AC_SUBST([AM_CP
我的应用程序使用 autotools 在 $pkgdatadir 中安装运行时所需的数据文件。应用程序的部分内容是用 C 编写的,数据目录的路径由 Makefile.am 中的以下语句设置: AM_C
我刚开始使用 autotools,如果这听起来有点基础但谷歌搜索并没有显示太多内容,请原谅我。 我将如何使用 autotools 生成自定义 conf 文件。 看是基于m4的configure包含了必
我在 autoconf 代码中看到很多关于被 dnl'ed 而不是 dnl'ed 的东西。什么是dnl? 最佳答案 来自 GNU M4 1.4.13 macro processor手动的: 8.1 D
例如,我想将选项 --enable-foo --enable-bar 添加到 ./configure 命令。 许多 ./configure 选项可以通过 BR2_ 配置间接设置,但许多软件有太多选项,
我需要构建一个配置有自动工具的库。通常的configure && make && make install步骤生成版本化的共享库,类似于libfoo.so.x.x是否可以修改configure.ac或
假设我有两个 autotools 项目: libmyutils libmypackage libmypackage 库依赖于 libmyutils。有没有办法让 libmypackage 链接到并引用
我正在构建一个小型库,并且正在使用 autotools。代码是在 C++ 中,它输出一些 html 代码。有很多与 html 代码相关的样式表和 javascript 代码。由于后者是固定的,因此代码
我正在研究自动工具。我有一些使用 java 类的 c++ 文件。我可以使用 autotools 为我的项目创建可执行文件,但我无法为项目中包含的 java 类创建可执行文件。我的项目将此 java 可
我想要一个用 autotools 构建的 c 库。老实说,我几乎不知道它们是如何工作的:/(我需要的库是“https://github.com/p4lang/PI”) 我已经执行了 ./configu
运行配置脚本后,我得到了一系列显示“已缓存”的输出。例如: checking for gcc... gcc checking for gcc... (cached) gcc ... checking
我正在尝试在 Cygwin 中编译一个包。我跑: ./configure 然后一两分钟后,它说: checking for working terminal libraries... Cannot f
如何告诉 automake 使用名称中包含空格的文件?这似乎不起作用。 bin_PROGRAMS = prog prog_SOURCES = "a file.c" "another file.c" 最
所以我一直在使用 Autotools 尝试学习工具链,以便我可以在我的一些跨平台项目中使用它。我已经很好地掌握了最基本的知识,但我在这里遇到了一个问题。 在我的源代码树中,我有一个“data”文件夹,
当我使用“make”运行我的自动工具生成的 Makefile 时,它会在当前目录中生成文件。我希望它不要“污染”我的目录,而是将程序移动到“bin/”(因为源在“src/”中) 这可以通过自动工具
我是一名优秀的程序员,十分优秀!