CMake missing modules directory

Cmake

Cmake Problem Overview


I've installed CMake 2.8.11.2 package from CMake's website for Mac 64-bit. We recently upgraded a project from Qt 4 to Qt 5 and the CMake upgrade is mandatory for CMake to use Qt 5. However, when I type cmake . I get the following error:

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.

I can confirm, there is no modules directory in the bin folder. I really don't know how to resolve this error, or how to get the modules needed.

Cmake Solutions


Solution 1 - Cmake

Do hash -r to clear the cache, then do cmake --version.

It should work.

Solution 2 - Cmake

I had the same problem after upgrading on Ubuntu. Removing cmake and the cmake-data package before performing the update solved it for me.

sudo apt-get remove cmake cmake-data

Now perform the update via

sudo -E add-apt-repository -y ppa:george-edison55/cmake-3.x
sudo -E apt-get update
sudo apt-get install cmake

Solution 3 - Cmake

This worked for me :

cd cmake-3.4.3

./bootstrap --prefix=/usr

make

sudo make install

Solution 4 - Cmake

Additionally, you may encounter the same error when running CMake from Cygwin. This may be caused by a PATH variable listing /bin before /usr/bin: in this case CMake is launched as /bin/cmake instead of /usr/bin/cmake, and trying to load modules from //share/cmake-X.Y.Z (which is a UNC path on Windows) instead of /usr/share/cmake-X.Y.Z.

Explicitly export'ing a correct CMAKE_ROOT isn't helpful, and cmake keeps displaying the same misleading message.

The issue can be solved by setting PATH to /usr/bin:/bin:/everything/else in your .bash_profile.

Solution 5 - Cmake

I was able to fix this error on Linux (for other who may be searching for answer on Linux) while trying to upgrade cmake 2.8.11 to 2.8.12 by exporting the CMAKE_ROOT environment variable like so:

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

The share directory should be on the same level as your bin directory.

Solution 6 - Cmake

I got the same error message upgrading cmake-3.5.1 to cmake-3.7.1 on Ubuntu 16.04.01 LTS. I just updated the repositories with

sudo apt-get update

Then

cmake --version 

brought up the correct and upgraded cmake version and the error messages was gone.

Solution 7 - Cmake

In my opinion/case this is a developer "problem". I suspect this occurs mostly to new developers so I go a bit deeper to put it in the right perspective:


To "not mess with" the original system files used for daily work and separate the new compiled and volatile programs in a separate location it is common to not just change but add/mount a complete folder structure similar to the original OS folder structure in a special "development" location. So more or less a mirrored folder structure of the original one but connected/linked to the original resources.

There for we need to add an environment variable to our user bash profile where we tell the system: "link our development folders to the following direction/dir."


On Arch Linux this is done in a file in ~/.bashrc - that is linked/forwarded in/by the ~/.bash_profile ("~" stands for /home/your user name/) and MacOS/Unix will be similar. To do that there are 2 ways:

  1. you can open the .bashrc file and add your environment path to the bottom of it or
  2. you can use "export" to put the environment variables to the right place in your user bash file.

for kde development e.g. you need to add a path at the end of the ~/.bashrc file like so:

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

what basically tells the system: the development is done in the /home/user name/kde/src folder - there are your files. You can choose where you want to locate your development environment.

If you execute cmake it "thinks" your files are in the original OS folder and the "Could not find CMAKE_ROOT" - message will disappear because it finds all your files since properly linked from your development folder structure to your system folder structure.


So basically to solve the problem you could just execute cmake in the right system folder - it just could mess up your system if the program or make files are not proper done so it is pulled to the home folder development folder structure. And you just have to tell that cmake, so it can find all needed files to compile your stuff, including the CMAKE_ROOT.


Another problem could be that cmake isn't properly installed. On Arch Linux systems that can be made sure by using the "sudo pacman -Syu cmake" command and it copies the files in the right direction and sets the right user variables to get it executed and reinstall cmake if necessary.

Btw, if you are on other systems like Debian make sure to use a Debian apt repository, it can differ from the Ubuntu repository, especially if you compile for the chosen system.

I tried to write a general "beginners in mind" overview to get em a fundamental picture. Executing cmake in the right folder solved that exact problem for me that was asked for.


(Actual that flags works for the actual cmake version from the official arch repository:

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

than:

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

Pay attention that between -S and /home/... is no space, same at -B and /home/... This worked fine for my kde system software builds. )

Solution 8 - Cmake

If anyone gets the following error:

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

Solution which worked for me:

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

The above command copies the cmake-3.20 directory from /share to /usr/share

Solution 9 - Cmake

This also happened to me on a fresh install of Ubuntu 21.04 and was fixed by installing it from "snap":

sudo snap install cmake --classic

(and then making sure that /snap/bin is in $PATH)

Solution 10 - Cmake

tl;dr: check the permission of folder /usr/local/share/cmake-x.xx.


I had a similar problem with the cmake that I build from source code. I compile the code with the following command.

./configure
make
sudo make install

and the binary files were placed into /usr/local/bin as expected. But I will encounter the same problem when executing cmake without sudo privilege. This is because the normal user don't have reading permission with folder /usr/local/share/cmake-3.xx.

The error went away when I give myself the permission to read/execute, with the command.

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

(xx will be the specific version that you installed.)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionroundtheworldView Question on Stackoverflow
Solution 1 - CmakeSamir OuldsaadiView Answer on Stackoverflow
Solution 2 - CmakematthiaskoenigView Answer on Stackoverflow
Solution 3 - CmakepratikadView Answer on Stackoverflow
Solution 4 - CmakeBassView Answer on Stackoverflow
Solution 5 - CmakeMike SView Answer on Stackoverflow
Solution 6 - CmakeJackEdgewoodView Answer on Stackoverflow
Solution 7 - CmakeIngo MiView Answer on Stackoverflow
Solution 8 - CmakePuneeth G RView Answer on Stackoverflow
Solution 9 - CmakeoseiskarView Answer on Stackoverflow
Solution 10 - CmakeYang YushiView Answer on Stackoverflow