CMake:混合源和构建目录参数(-S 和 -B)?

问题描述 投票:0回答:1

我正在从 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
    :这允许我指定源目录,但意味着二进制目录最终位于任何地方。
azure-devops cmake
1个回答
0
投票

当我创建这篇文章并准备所有必需的信息时,我找到了解决方案:管道中较早的构建步骤将旧的 CMake 版本拉入

$PATH
(3.3),该版本似乎无法处理
-S
-B
。因为我专门检查了系统的CMake版本,所以注册起来花了一些时间。我可以通过直接调用系统的 CMake 来绕过这个问题:

/usr/bin/cmake ...
© www.soinside.com 2019 - 2024. All rights reserved.