【问题标题】:CMake missing modules directoryCMake缺少模块目录
【发布时间】:2013-09-08 01:20:08
【问题描述】:

我已经从 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目录。我真的不知道如何解决这个错误,或者如何获取所需的模块。

【问题讨论】:

  • 您之前是否安装过以前版本的 CMake?有时符号链接在 OS X 上会变得混乱,这可能会导致像这样的奇怪错误。不过,您应该在安装过程中收到有关此问题的警告。

标签: cmake


【解决方案1】:

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

它应该可以工作。

【讨论】:

  • 如果在包和源代码之间更改 cmake 版本,这可能是正确的解决方案。
  • 就我而言,默认的 cmake 与 anaconda (python) 的 cmake 包冲突。您的解决方案就像一个有魅力的人。谢谢
  • 这里唯一理智的答案
【解决方案2】:

在 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

【讨论】:

  • 重新安装后记得source ~/.bashrc,以便CMAKE_ROOT重新注册=)
  • 在 CentOS 上它也帮助了我。默认情况下有 2.8,我安装了 3.6.3 并遇到了这个问题。然后删除与存储库一起使用的一个(使用remove cmake cmake-data,正如作者建议的那样),并在构建版本上再次删除make install - 一切正常。
【解决方案3】:

这对我有用:

cd cmake-3.4.3

./bootstrap --prefix=/usr

make

sudo make install

【讨论】:

    【解决方案4】:

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

    明确地 export'ing 一个正确的 CMAKE_ROOT 没有帮助,cmake 一直显示相同的误导性消息。

    可以通过在.bash_profile 中将 PATH 设置为 /usr/bin:/bin:/everything/else 来解决此问题。

    【讨论】:

    • CMake 有时真是脑死。我已经尝试导出CMAKE_ROOT=C:\Cygwin64\usr\share\cmake-3.6.2\ModulesCMAKE_ROOT=C:/Cygwin64/usr/share/cmake-3.6.2/ModulesCMAKE_ROOT=/usr/share/cmake-3.6.2/Modules。它仍然声称 CMAKE_ROOT 未设置。这个程序有时很糟糕......
    • 谢谢,export PATH=/usr/bin:$PATH 很快为我解决了这个问题。
    【解决方案5】:

    在尝试通过导出 CMAKE_ROOT 环境变量将 cmake 2.8.11 升级到 2.8.12 时,我能够在 Linux 上修复此错误(对于可能正在 Linux 上寻找答案的其他人):

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

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

    【讨论】:

      【解决方案6】:

      我在 Ubuntu 16.04.01 LTS 上将 cmake-3.5.1 升级到 cmake-3.7.1 时收到相同的错误消息。我刚刚用

      更新了存储库
      sudo apt-get update
      

      然后

      cmake --version 
      

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

      【讨论】:

        【解决方案7】:

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


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

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


        在 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/... 这适用于我的 kde 系统软件构建。 )

        【讨论】:

          【解决方案8】:

          如果有人收到以下错误:

          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

          【讨论】:

            【解决方案9】:

            我在全新安装 Ubuntu 21.04 时也遇到了这种情况,并通过从“snap”安装它得到了修复:

            sudo snap install cmake --classic
            

            (然后确保/snap/bin$PATH 中)

            【讨论】:

              【解决方案10】:

              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-01-05
                • 2014-04-06
                • 2022-01-18
                • 2021-10-02
                • 2015-01-08
                • 2015-01-26
                • 2014-12-27
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多