什么是 CMake 缓存?
我正在阅读 cmake 手册,偶尔会遇到术语cmake cache。比如这一段:
-C <initial-cache>预加载脚本以填充缓存。当 cmake 首次在空构建树中运行时,它会创建一个 CMakeCache.txt 文件并使用项目的可自定义设置填充它。此选项可用于指定在第一次通过项目的 cmake 列表文件之前从中加载缓存条目的文件。加载的条目优先于项目的默认值。给定的文件应该是包含使用 CACHE 选项的 SET 命令的 CMake 脚本,而不是缓存格式文件。
这个缓存是什么?
是否有不同类型的缓存?
或者更好的问题是:一般缓存是什么?
另外,缓存的重要性是什么?
处理缓存时是否有某些注意事项?
例如,当您重新启动计算机时,缓存是否会重置?
当我在 Visual Studio C++ 项目中
添加新
项目时,
“添加新项目”->“C++ 文件”
文件名始终默认为Source.cpp.
我不喜欢这个名字,我发现自己一直把它改成main.cpp.
有什么办法可以改变这种情况吗?
我试过~LAlt Up:: return在我的 AutoHotKey 脚本中使用。
但是当我抬起键时,菜单栏仍然无济于事。
为什么这个技巧在其他系统上有效,但在我的系统上无效?
还是我做错了什么?
重现步骤:
git clone https://github.com/emacs-mirror/emacs.giti@user:~/emacs$ ./autogen.sh; ./configurelib-src/以构建etags二进制文件
cd lib-src/etags通过Makfile在lib-src/目录中进行编辑,确保使用最多的调试符号编译二进制文件,并且进行尽可能少的优化
CC=gccCFLAGS=-fno-eliminate-unused-debug-types -g3 -O0CPPFLAGS =LDFLAGS =建立etags二进制目标
make tagsgdb使用如下所示的参数进行简单的测试,测试出调试时不会跳过任何代码:etags --helpgdb etags
(gdb) b main
Breakpoint 1 at 0x37ca: file etags.c, line 1071.
(gdb) r
Starting program: /home/i/emacs/lib-src/etags
Breakpoint 1, main (argc=1, argv=0x7fffffffdfb8) at etags.c:1071
1071 {
(gdb) n
1078 bool help_asked = false;
(gdb) n
1083 progname = argv[0]; …Run Code Online (Sandbox Code Playgroud) 我无法绕过这个.
当第4行看起来相同时
,为什么这两个函数会产生截然不同的结果
呢?
版本I
int factorial(int val) // input=5; output=120
{
if (val != 0)
return factorial(val - 1) * val;
return 1;
}
Run Code Online (Sandbox Code Playgroud)
版本II
int factorial(int val) // input=5; output=0
{
if (val != 0)
return factorial(--val) * val;
return 1;
}
Run Code Online (Sandbox Code Playgroud)