CMake上前一个问题的答案显示了以下命令行:
cmake -H. -Bbuild -G "MSYS Makefiles"
-H.
选项在此处执行什么任务?cmake --help
说-H
打印帮助。。。
我使用的是CMake 3.2.3。
如链接答案中所述,这是一个未记录的选项,但查看源代码会发现其效果:
在cmake::SetArgs()
:中
if(arg.find("-H",0) == 0)
{
directoriesSet = true;
std::string path = arg.substr(2);
path = cmSystemTools::CollapseFullPath(path);
cmSystemTools::ConvertToUnixSlashes(path);
this->SetHomeDirectory(path);
最后一个调用SetHomeDirectory
实际上设置了项目的源目录。-B
选项(也未记录)反过来设置二进制目录。
如果没有设置这些选项,二进制目录将是执行cmake的当前文件夹,并且源目录可以作为位置参数给定(如果找不到,源文件夹也将是当前工作目录)。
《CMake漫游指南》解释了CMake 3.13选项中的传统和新选项:
-
-H
这个内部选项没有文档记录,但被社区广泛使用。
和
已在3.13中替换为-S的官方源目录标志。
-
-B
从CMake 3.13开始,-B是一个官方支持的标志,可以正确处理空格,并且可以独立于-S或-H选项使用。