我正在从 Azure 管道运行
cmake
,并看到一个不寻常的错误。
这是正在运行的脚本的输出(
set -o xtrace
设置为打印实际命令):
+ cmake -S /home/user/myagent/_work/86/s/repo -B /home/user/myagent/_work/86/b/build_image_builder -DCMAKE_INSTALL_PREFIX=/home/rfmibuild/myagent/_work/86/b/prefix
CMake Error: The source directory "/home/user/myagent/_work/86/b/build_image_builder" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
(注意:为了清楚起见,删除了额外的 CMake 参数,并对路径名称进行了稍微调整)。
如您所见,它忽略了
-S
提供的源目录并将构建目录解释为源目录。如果我首先创建构建目录,错误如下所示:
+ cmake -S /home/user/myagent/_work/840/s/repo -B /home/user/myagent/_work/840/b/build_image_builder -DCMAKE_INSTALL_PREFIX=/home/user/myagent/_work/840/b/prefix
CMake Error: The source directory "/home/user/myagent/_work/840/b/build_image_builder" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
这不是我第一次从 Azure 管道运行
cmake
,但这种行为是新的。管道配置中可能有一些与 CMake 混乱的东西,但我无法查明它。
我尝试过的事情:
-S
并直接指定源目录,相同的行为。-B
:这允许我指定源目录,但意味着二进制目录最终位于任何地方。当我创建这篇文章并准备所有必需的信息时,我找到了解决方案:管道中较早的构建步骤将旧的 CMake 版本拉入
$PATH
(3.3),该版本似乎无法处理 -S
和-B
。因为我专门检查了系统的CMake版本,所以注册起来花了一些时间。我可以通过直接调用系统的 CMake 来绕过这个问题:
/usr/bin/cmake ...