55

我已经从 CMake 的网站为 Mac 64 位安装了 CMake 2.8.11.2 包。我们最近将一个项目从 Qt 4 升级到 Qt 5,并且 CMake 升级是 CMake 使用 Qt 5 所必需的。但是,当我键入时,cmake .我收到以下错误:

CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in
/Applications/CMake 2.8-11.app/Contents/bin
CMake Error: Error executing cmake::LoadCache(). Aborting.

我可以确认,bin 文件夹中没有 modules 目录。我真的不知道如何解决这个错误,或者如何获取所需的模块。

4

10 回答 10

92

hash -r清除缓存,然后执行cmake --version.

它应该工作。

于 2017-10-18T08:31:29.497 回答
48

在 Ubuntu 上升级后我遇到了同样的问题。在执行更新之前删除 cmake 和 cmake-data 包为我解决了这个问题。

sudo apt-get remove cmake cmake-data

现在通过执行更新

sudo -E add-apt-repository -y ppa:george-edison55/cmake-3.x
sudo -E apt-get update
sudo apt-get install cmake
于 2016-02-01T10:51:43.230 回答
21

这对我有用:

cd cmake-3.4.3

./bootstrap --prefix=/usr

make

sudo make install
于 2016-02-02T12:17:40.667 回答
15

此外,从Cygwin运行CMake时,您可能会遇到相同的错误。这可能是由之前的变量列表引起的:在这种情况下启动为而不是,并尝试从(在Windows上是UNC路径)而不是.PATH/bin/usr/binCMake/bin/cmake/usr/bin/cmake//share/cmake-X.Y.Z/usr/share/cmake-X.Y.Z

明确地export“正确”CMAKE_ROOT没有帮助,并且cmake一直显示相同的误导性信息。

可以通过将 PATH 设置/usr/bin:/bin:/everything/else.bash_profile.

于 2015-10-23T09:03:34.197 回答
3

cmake 2.8.11在尝试2.8.12通过像这样导出CMAKE_ROOT环境变量进行升级时,我能够在 Linux 上修复此错误(对于可能正在 Linux 上搜索答案的其他人) :

export CMAKE_ROOT=/path_to_install/cmake-2.8.12.2-Linux-i386/share/cmake-2.8

share目录应与您的bin目录处于同一级别。

于 2015-04-07T23:33:17.840 回答
0

我在 Ubuntu 16.04.01 LTS 上将 cmake-3.5.1 升级到 cmake-3.7.1 时收到相同的错误消息。我刚刚更新了存储库

sudo apt-get update

然后

cmake --version 

调出正确和升级的 cmake 版本,错误消息消失了。

于 2017-01-11T16:53:27.940 回答
0

在我看来/情况下,这是开发人员的“问题”。我怀疑这主要发生在新开发人员身上,所以我更深入地把它放在正确的角度:


为了“不弄乱”用于日常工作的原始系统文件并将新编译的和易失的程序分离到一个单独的位置,通常不仅要更改而且添加/安装类似于原始 OS 文件夹结构的完整文件夹结构特殊的“发展”位置。所以或多或少是原始文件夹的镜像文件夹结构,但连接/链接到原始资源。

在那里,我们需要向environment variable我们的用户 bash 配置文件添加一个我们告诉系统的位置:“将我们的开发文件夹链接到以下方向/目录。”


在 Arch Linux 上,这是在一个文件中完成的~/.bashrc- 该文件由~/.bash_profile (“~”代表/home/your user name/链接/转发/转发,MacOS/Unix 将类似。要做到这一点,有两种方法:

  1. 您可以打开 .bashrc 文件并将您的环境路径添加到它的底部,或者
  2. 您可以使用“导出”将环境变量放在用户 bash 文件中的正确位置。

对于 kde 开发,例如,您需要在 ~/.bashrc 文件的末尾添加一个路径,如下所示:

# Adding the kdesrc-build directory to the path
export PATH="$HOME/kde/src/kdesrc-build:$PATH"

基本上告诉系统:开发是在/home/user name/kde/src文件夹中完成的 - 有你的文件。您可以选择要放置开发环境的位置。

如果您执行 cmake,它会“认为”您的文件位于原始 OS 文件夹中,并且“ Could not find CMAKE_ROOT” - 消息将消失,因为它会找到您的所有文件,因为它会从您的开发文件夹结构正确链接到您的系统文件夹结构。


所以基本上要解决这个问题,你可以在正确的系统文件夹中执行 cmake - 如果程序或 ma​​ke 文件没有正确完成,它可能会弄乱你的系统,因此它会被拉到主文件夹开发文件夹结构中。你只需要告诉 cmake,它就可以找到所有需要的文件来编译你的东西,包括CMAKE_ROOT.


另一个问题可能是没有正确安装 cmake。在 Arch Linux 系统上,可以通过使用 " sudo pacman -Syu cmake" 命令来确保它会以正确的方向复制文件并设置正确的用户变量以使其执行并在必要时重新安装 cmake。

顺便说一句,如果您在 Debian 等其他系统上,请确保使用 Debian apt 存储库,它可能与 Ubuntu 存储库不同,特别是如果您为所选系统进行编译。

我试图写一个一般的“初学者头脑”概述,让他们了解基本情况。在正确的文件夹中执行 cmake 为我解决了所要求的确切问题。


(实际该标志适用于官方 Arch 存储库中的实际 cmake 版本:

1: cd /home/ivanovic/kde/src/program_name

比:

2: cmake -S/home/ivanovic/kde/src/program_name -B/home/ivanovic/kde/build/program_name -DCMAKE_INSTALL_PREFIX=/home/ivanovic/kde/usr -DCMAKE_BUILD_TYPE=Debug

注意 -S 和 /home/... 之间没有空格,在 -B 和 /home/... )

于 2019-12-07T11:31:19.060 回答
0

如果有人收到以下错误:

Modules directory not found in
/usr/share/cmake-3.20
cmake version 3.20.2

对我有用的解决方案:

sudo cp -r /share/cmake-3.20 /usr/share/

上述命令将 cmake-3.20 目录从复制/share/usr/share

于 2021-05-03T15:13:46.740 回答
0

tl; dr:检查文件夹的权限/usr/local/share/cmake-x.xx


cmake我从源代码构建的那个也有类似的问题。我使用以下命令编译代码。

./configure
make
sudo make install

/usr/local/bin并且二进制文件按预期放入。cmake 但是在没有sudo 权限的情况下执行时我会遇到同样的问题。这是因为普通用户没有文件夹的读取权限/usr/local/share/cmake-3.xx

当我使用命令授予自己读取/执行的权限时,错误消失了。

sudo chmod 755 /usr/local/share/cmake-3.xx

(xx 将是您安装的特定版本。)

于 2021-09-02T12:43:46.717 回答
0

这也发生在我全新安装的 Ubuntu 21.04 上,并通过从“snap”安装它来修复:

sudo snap install cmake --classic

(然后确保它/snap/bin$PATH

于 2021-05-07T07:36:32.293 回答