web-dev-qa-db-fra.com

Erreur CMake dans CMakeLists.txt: 30 (projet): Aucun fichier CMAKE_C_COMPILER n'a pu être trouvé.

J'essaie de créer une solution Visual Studio avec CMake pour compiler la dernière version de aseprite et CMake continue de me donner les éléments suivants:

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

J'ai déjà téléchargé GCC et j'utilise Visual Studio 2015 .

Je suis ce tutoriel:

https://github.com/aseprite/aseprite/blob/master/INSTALL.md

70
Caio Fontes

Ces messages d'erreur

CMake Error at ... (project):
    No CMAKE_C_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also ".../CMakeFiles/CMakeOutput.log".
See also ".../CMakeFiles/CMakeError.log".

ou

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.
Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
...
-- Configuring incomplete, errors occurred!

cela signifie simplement que CMake n'a pas pu trouver votre compilateur C/CXX pour compiler un programme de test simple (l'une des premières choses que CMake essaie tout en détectant votre environnement de construction).

Les étapes pour trouver votre problème dépendent de l’environnement de construction que vous souhaitez générer. Les tutoriels suivants sont une collection de réponses ici sur Stack Overflow et sur certaines de mes propres expériences avec CMake sur Microsoft Windows 7/8/10 et Ubuntu 14.04.

Conditions préalables

  • Vous avez installé le compilateur/IDE et il a été capable de compiler une fois tout autre programme (directement sans CMake)
  • Vous avez la dernière version CMake
  • Vous avez des droits d'accès sur le lecteur que vous souhaitez que CMake génère votre environnement de construction.
  • Vous avez un répertoire de construction vierge (parce que CMake met en cache les choses de la dernière tentative), par exemple. en tant que sous-répertoire de votre arbre source

    Windows cmd.exe

    > rmdir /s /q VS2015
    > mkdir VS2015
    > cd VS2015
    

    Shell Bash

    $ rm -rf MSYS
    $ mkdir MSYS
    $ cd MSYS
    

    et assurez-vous que votre commande Shell pointe vers votre nouveau répertoire de sortie binaire.

Généralités que vous pouvez/devriez essayer

  1. Est-ce que CMake est capable de trouver et d’exécuter avec tout compilateur par défaut? Courir sans donner de générateur

    > cmake ..
    -- Building for: Visual Studio 14 2015
    ...
    

    Parfait s'il a correctement déterminé le générateur à utiliser - comme ici Visual Studio 14 2015

  2. Qu'est-ce qui a réellement échoué?

    Dans le répertoire de sortie de la construction précédente, regardez CMakeFiles\CMakeError.log pour tout message d'erreur qui vous convient ou essayez d'ouvrir/compiler le projet de test généré à CMakeFiles\[Version]\CompilerIdC | CompilerIdCXX directement à partir de la ligne de commande (comme indiqué dans le journal des erreurs).

CMake ne trouve pas Visual Studio

  1. Essayez de sélectionner la bonne version du générateur :

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
    
  2. Si cela ne vous aide pas, essayez de définir d'abord les variables d'environnement Visual Studio (le chemin peut varier):

    > "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
    > cmake ..
    

    ou utilisez le raccourci Developer Command Prompt for VS2015 dans votre menu Démarrer de Windows sous All ProgramsVisual Studio 2015/Visual Studio Tools (merci à @Antwane pour le conseil).

Contexte: CMake prend en charge toutes les versions et versions de Visual Studio (Express, Communauté, Professional, Premium, Test, Team, Enterprise, Ultimate, etc.). Pour déterminer l’emplacement du compilateur, il utilise une combinaison de recherche dans le registre (par exemple, à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir), de variables d’environnement système et - si aucun des autres n’a produit quelque chose - de tenter clairement d’appeler le compilateur.

_/CMake ne trouve pas GCC (MinGW/MSys)

  1. Vous démarrez le MSys bash Shell avec msys.bat et essayez simplement d'appeler directement gcc

    $ gcc
    gcc.exe: fatal error: no input files
    compilation terminated.
    

    Ici, il a trouvé gcc et se plaint de ne pas lui avoir donné de paramètres.

    Donc, ce qui suit devrait fonctionner:

    $ cmake -G "MSYS Makefiles" ..
    -- The CXX compiler identification is GNU 4.8.1
    ...
    $ make
    

    Si GCC n'a pas été trouvé, appelez export PATH=... pour ajouter votre chemin d'accès aux compilateurs (voir COMMENT DÉFINIR LA VARIABLE D'ENVIRONNEMENT PATH DANS UN SCRIPT CMAKE?) Et réessayez.

  2. Si cela ne fonctionne toujours pas, essayez de définir directement le chemin du compilateur CXX en l'exportant (le chemin peut varier)

    $ export CC=/c/MinGW/bin/gcc.exe
    $ export CXX=/c/MinGW/bin/g++.exe
    $ cmake -G "MinGW Makefiles" ..
    -- The CXX compiler identification is GNU 4.8.1
    ...
    $ mingw32-make
    

    Pour plus de détails, voir Comment spécifier un nouveau chemin GCC pour CMake

    Note: Lorsque vous utilisez le générateur "MinGW Makefiles", vous devez utiliser le programme mingw32-make distribué avec MinGW.

  3. Ne fonctionne toujours pas? C'est bizarre. Assurez-vous que le compilateur est présent et qu'il dispose de droits exécutables (voir également le chapitre sur les conditions préalables ci-dessus).

    Sinon, le dernier recours de CMake consiste à ne pas rechercher le compilateur lui-même et à définir les variables internes de CMake directement par

    $ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
    

    Pour plus de détails, voir CMAKE N'HONORE PAS -D CMAKE_CXX_COMPILER = G ++ et COMPILATEUR DE PARAMÈTRES D'ERREUR CMAKE }

    Ces variables peuvent également être définies via cmake-gui.exe sous Windows. Voir CMAKE NE TROUVE PAS LE COMPILATEUR

Background: pratiquement identique à Visual Studio. CMake supporte toutes sortes de variétés GCC. Il recherche les variables d'environnement (CC, CXX, etc.) ou tente simplement d'appeler le compilateur. De plus, il détectera tous les préfixes (quand compilation croisée ) et essaiera de l'ajouter à tous les binutils de la chaîne d'outils du compilateur GNU (ar, ranlib, strip, ld, nm, objdump et objcopy).

73
Florian

J'ai aussi rencontré cette erreur lorsque je travaillais avec CMake:

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

La zone d'avertissement de l'article de la bibliothèque MSDN Visual C++ dans Visual Studio 2015 m'a fourni l'aide dont j'avais besoin.

Visual Studio 2015 n'est pas livré avec C++ installé par défaut. Ainsi, la création d'un nouveau projet C++ vous invitera à télécharger les composants C++ nécessaires.

12
Natalie Cottrill

Cela m'est arrivé après l'installation de Visual Studio 15 2017.

Le compilateur C++ pour Visual Studio 14 2015 n'était pas le problème. Cela semblait être un problème avec le SDK Windows 10.

L'ajout des SDK Windows 10 à Visual Studio 14 2015 a résolu le problème pour moi.

Voir la capture d'écran ci-jointe.

 Enter image description here

10
Wim Vanhenden

Pour Ubuntu, veuillez installer les éléments ci-dessous:

Sudo apt-get update && Sudo apt-get install build-essential
5
Vishnu

J'ai rencontré ce problème lors de la construction de libgit2-0.23.4. Pour moi, le problème était que le compilateur C++ et les packages associés n’étaient pas installés avec VS2015, donc le fichier "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" était manquant et Cmake était ' t capable de trouver le compilateur.

J'ai essayé de créer manuellement un projet C++ dans l'interface graphique de Visual Studio 2015 (C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe) Et lors de la création du projet, J'ai reçu une invite pour télécharger le C++ et les packages associés. 

Après avoir téléchargé les paquets requis, j'ai pu voir que vcvarsall.bat & Cmake était capable de trouver le compilateur et de s'exécuter avec succès avec le journal suivant:

C:\Users\aksmahaj\Documents\MyLab\fritzing\libgit2\build64>cmake ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.24210.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual        
Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual  
Studio 14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- Could NOT find ZLIB (missing:  ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- zlib was not found; using bundled 3rd-party sources.
-- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of 
the default search path.
-- Looking for futimens
-- Looking for futimens - not found
-- Looking for qsort_r
-- Looking for qsort_r - not found
-- Looking for qsort_s
-- Looking for qsort_s - found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - not found
-- Found PythonInterp: C:/csvn/Python25/python.exe (found version "2.7.1")
-- Configuring done
-- Generating done
-- Build files have been written to:    
C:/Users/aksmahaj/Documents/MyLab/fritzing/libgit2/build64
4
Aksh1801

J'ai eu les mêmes erreurs avec CMake. Dans mon cas, j'ai utilisé la mauvaise version de Visual Studio dans la boîte de dialogue CMake initiale dans laquelle nous devons sélectionner le compilateur Visual Studio.

Ensuite, je l'ai changé pour "Visual Studio 11 2012" et tout a fonctionné. (J'ai la version Visual Studio Ultimate 2012 sur mon PC). En général, essayez de saisir une version plus ancienne de Visual Studio dans la boîte de dialogue de configuration initiale de CMake.

4
TSac

Pour moi, ce problème est parti sous Windows lorsque j'ai déplacé mon projet dans un répertoire parent moins profond, c'est-à-dire:

C:\Users\spenc\Desktop\MyProjectDirectory

au lieu de

C:\Users\spenc\Desktop\...\MyProjectDirectory.

Je pense que la source du problème est que MSBuild a une restriction de longueur de chemin de fichier à 260 caractères. Cela provoque le test de base du compilateur effectué par CMake pour construire un projet appelé CompilerIdCXX.vcxproj qui échoue avec l'erreur suivante:

C1083: Cannot open source file: 'CMakeCXXCompilerId.cpp'

parce que la longueur du chemin du fichier, par exemple.

C:\Users\spenc\Desktop\...\MyProjectDirectory\build\CMakeFiles\...\CMakeCXXCompilerId.cpp

dépasse la restriction MAX_PATH.

CMake conclut alors qu'il n'y a pas de compilateur CXX.

4
spenceryue

Assurez-vous que vous avez sélectionné la version correcte de Visual Studio. C'est plus compliqué qu'il n'y paraît car Visual Studio 2015 est en fait Visual Studio 14 et, de la même manière, Visual Studio 2012 est Visual Studio 11. J'avais mal sélectionné Visual Studio 15, qui est en fait Visual Studio 2017, alors que 2015 était installé.

2
Aryaman Gupta

Cela fonctionne pour moi dans Ubuntu 17.10 (Artful Aardvark):

apt-get update
apt-get install build-essential
1
purval_patel

Juste au cas où cela pourrait aider quelqu'un comme moi à l'avenir:

Je rencontre ce problème depuis 24 heures sur 3 ordinateurs 64 bits différents (Win7, Windows 8.1 VM et ordinateur portable WIn 8.1), tout en essayant de créer WebKit avec VS 2017.

Le problème simple ici est que le compilateur VC++ (i.e cl.exe et ses DLL dépendantes) n'est pas visible pour CMake. Simple. En rendant les dossiers VC++ contenant ces binaires visibles pour CMake et votre commande de travail Invite (si vous exécutez Cmake à partir d'une invite de commande), le tour est joué! (En plus des points clés soulevés par d'autres, ci-dessus)

Quoi qu'il en soit, après toutes sortes de corrections - telles que publiées sur ces nombreux forums -, j'ai découvert qu'il s'agissait simplement de veiller à ce que le contenu de la variable PATH ne soit pas encombré de multiples chemins BIN Visual Studio, etc. et au lieu de cela, pointe vers:

a) l'emplacement de votre compilateur (par exemple,cl.exe pour votre version préférée de Visual Studio), qui dans mon cas (cible de la plate-forme 64 bits et se développant sur un hôte 64 bits) est: C:\Fichiers de programme (x86)\Microsoft Visual Studio\2017\Communauté\VC\Tools\MSVC\14.15.26726\bin\Hostx64\x64

b) et en plus, le dossier contenant une DLL dépendante appelée (dont dépend le fichier cl.exe): api-ms-win-crt-runtime-l1-1-0.dll - qui sur ma machine est:

C:\Fichiers de programme (x86)\Débogueur à distance\x64\Microsoft Visual Studio\2017\Community\Common7\IDE\Remote

Ces deux répertoires étant ajoutés à une variable de chemin système simplifiée et CUSTOM (fonctionnant sous une invite de commande privilégiée par l'administrateur), ont été éliminés. les erreurs.

J'espère que ça aide quelqu'un.

1
GreatCentralSun

Aucune des solutions ici ne résout mon problème - uniquement lorsque j'installe Windows Update pour le runtime C universel.

Maintenant, CMake fonctionne et plus aucun lien ne se bloque à partir de Visual Studio.

Mise à jour pour Universal C Runtime sous Windows

1
Meir Gerenstadt

Vous pouvez également vous assurer que vous êtes bien l'utilisateur Sudo et que vous disposez d'un accès en lecture/écriture sur le répertoire sur lequel vous travaillez. J'ai eu un problème similaire sur OS X, et je l'ai corrigé simplement en entrant en mode Sudo.

1
daniel rubambura

Je reçois exactement l'erreur signalée si ccache est activé lors de l'utilisation du générateur de code X de CMake . La désactivation de ccache a résolu le problème pour moi. Ci-dessous, je présente un correctif/contrôle qui fonctionne pour MacOS, mais devrait fonctionner de la même manière sur d’autres plates-formes.

Apparemment, il est possible d'utiliser le générateur Xcode de CMake (et d'autres) également en combinaison avec ccache, comme décrit ici . Mais je n'ai jamais essayé moi-même.

# 1) To check if ccache is enabled:
echo $CC
echo $CXX
# This prints something like the following: 
#     ccache clang -Qunused-arguments -fcolor-diagnostics. 
# CC or CXX are typically set in the `.bashrc` or `.zshrc` file.

# 2) To disable ccache, use the following:
CC=clang
CXX=clang++

# 3) Then regenerate the cmake project
cmake -G Xcode <path/to/CMakeLists.txt>
1
normanius

J'ai mis à jour Visual Studio 2015 Update 2 à Visual Studio 2015 Update 3 et cela a résolu mon problème.

0
TripleS

Pour moi, il a fonctionné d’utiliser l’invite de commande du développeur fournie avec Visual Studio, puis de cd à your/jcef/dir et d’exécuter cmake -G "Visual Studio 14 Win64" ...

0
Marc Dirven

J'ai eu le même problème.

J'essayais d'installer dlib sur ma machine et cela m'a donné l'erreur . Le tutoriel mentionné dans la question mène au téléchargement de visual studio 2017. Je l'ai résolu en désinstallant VS 2017 et en installant VS 2015.

On peut installer VS 2015 via ce thread stackoverflow: Comment télécharger Visual Studio Community Edition 2015 (pas 2017)

0
Aprajita Verma

Regardez dans le fichier Cmakelists.txt si vous trouvez ARM vous devez installer C++ pour ARM.

Ce sont ces forfaits:

Plate-forme Windows universelle C++ pour ARM64 "non requise"

Compilateurs et bibliothèques Visual C++ pour ARM "non requis"

Compilateurs Visual C++ et bibliothèques pour ARM64 "très probablement requis"

Required for finding Threads on ARM 
enable_language(C) 
enable_language(CXX)

Puis les problèmes

Aucun CMAKE_C_COMPILER n'a pu être trouvé.

CMAKE_CXX_COMPILER introuvable.

Peut disparaître à moins que vous ne spécifiiez le compilateur c comme clang, et peut-être que l’installation de clang fonctionnera d’une autre manière.

Vous pouvez avec remove facultatif dans cmakelists.txt les deux avec # avant enable_langu si vous ne compilez pas pour ARM.

0
Dealazer

Je sais que cette question concerne Visual Studio 2015. J'ai rencontré ce problème avec Visual Studio 2017. Après une recherche sur Google, je suis arrivé à cette page. Après avoir examiné les 2,3 premières réponses, j'ai compris que c'était le problème de l'installation de vc ++. L'installation de la charge de travail "Développement de bureau avec c ++" a résolu le problème.

 Desktop development with c++ 

0
Asad