Erro CMake em CMakeLists.txt: 30 (projeto): Nenhum CMAKE_C_COMPILER foi encontrado


104

Estou tentando fazer uma solução Visual Studio com CMake para compilar a versão mais recente do aseprite e CMake continua me dando:

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

Já baixei o GCC e estou usando o Visual Studio 2015 .

Estou seguindo este tutorial:

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


Você pode configurar o projeto para Visual Studio com seu compilador ou para Makefiles com gcc. Que método você tentou?
Tsyvarev

Qual é o comando cmake que você está inserindo?
bames53

Você está usando o CMake mais recente? Qual gerador você usou? Você executou os comandos no prompt de comando do Visual Studio 2015 (portanto, ele tem as variáveis ​​de ambiente do compilador definidas)?
drescherjm

1
@ bames53 Só queria adicionar as linhas de comando correspondentes para @Caio Fontes tentar: cmake .. -G "Visual Studio 14 2015"ou cmake .. -G "MSYS Makefiles"(se gccsignifica MinGW). E eu tenho visto muito essas questões (como aqui , aqui ou aqui ) e estou pensando que estamos perdendo uma resposta combinada / tutorial no SO.
Florian,

1
Possível duplicata da solução de geração
Mark Ingram

Respostas:


97

Essas mensagens de erro

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!

apenas significa que o CMake não foi capaz de encontrar seu compilador C / CXX para compilar um programa de teste simples (uma das primeiras coisas que o CMake tenta ao detectar seu ambiente de construção).

As etapas para localizar seu problema dependem do ambiente de construção que você deseja gerar. Os tutoriais a seguir são uma coleção de respostas aqui no Stack Overflow e algumas de minhas próprias experiências com CMake no Microsoft Windows 7/8/10 e Ubuntu 14.04.

Condições prévias

  • Você instalou o compilador / IDE e foi capaz de compilar qualquer outro programa uma vez (diretamente sem CMake)
  • Você tem a versão mais recente do CMake
  • Você tem direitos de acesso na unidade que deseja que o CMake gere seu ambiente de construção
  • Você tem um diretório de construção limpo (porque o CMake faz o cache das coisas da última tentativa), por exemplo, como um subdiretório de sua árvore de origem

    Cmd.exe do Windows

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

    Bash shell

    $ rm -rf MSYS
    $ mkdir MSYS
    $ cd MSYS

    e certifique-se de que seu shell de comando aponta para o diretório de saída binária recém-criado.

Coisas gerais que você pode / deve tentar

  1. O CMake é capaz de encontrar e rodar com qualquer / seu compilador padrão? Execute sem dar um gerador

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

    Perfeito se determinar corretamente o gerador a ser usado - como aqui Visual Studio 14 2015

  2. O que foi que realmente falhou?

    No diretório de saída da compilação anterior, procure CMakeFiles\CMakeError.logqualquer mensagem de erro que faça sentido para você ou tente abrir / compilar o projeto de teste gerado em CMakeFiles\[Version]\CompilerIdC| CompilerIdCXXdiretamente da linha de comando (conforme encontrado no log de erros).

CMake não consegue encontrar o Visual Studio

  1. Tente selecionar a versão correta do gerador :

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
  2. Se isso não ajudar, tente definir as variáveis ​​de ambiente do Visual Studio primeiro (o caminho pode variar):

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

    ou use o Developer Command Prompt for VS2015atalho no menu Iniciar do Windows em All Programs/ Visual Studio 2015/ Visual Studio Tools(obrigado em @Antwane pela dica).

Histórico : CMake oferece suporte a todas as versões e sabores do Visual Studio (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, etc.). Para determinar a localização do compilador, ele usa uma combinação de pesquisa no registro (por exemplo, at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir), variáveis ​​de ambiente do sistema e - se nenhuma das outras surgiram com algo - simplesmente tente chamar o compilador.

CMake não consegue encontrar GCC (MinGW / MSys)

  1. Você inicia o bashshell MSys com msys.bate apenas tenta chamar diretamentegcc

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

    Aqui ele encontrou gcce está reclamando que não dei nenhum parâmetro para trabalhar.

    Portanto, o seguinte deve funcionar:

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

    Se o GCC não foi encontrado, chame export PATH=...para adicionar o caminho do seu compilador (veja Como definir a variável de ambiente PATH no script CMake? ) E tente novamente.

  2. Se ainda não estiver funcionando, tente definir o CXXcaminho do compilador diretamente exportando-o (o caminho pode variar)

    $ 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

    Para obter mais detalhes, consulte Como especificar o novo caminho GCC para CMake

    Nota : Ao usar o gerador "MinGW Makefiles", você deve usar o mingw32-makeprograma distribuído com MinGW

  3. Ainda não funciona? Isso é estranho. Certifique-se de que o compilador está disponível e possui direitos de execução (consulte também o capítulo de pré-condições acima).

    Caso contrário, o último recurso do CMake é não tentar qualquer pesquisa do compilador e definir as variáveis ​​internas do CMake diretamente por

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

    Para obter mais detalhes, consulte Cmake não honra -D CMAKE_CXX_COMPILER = g ++ e compilador de configuração de erro Cmake

    Alternativamente, essas variáveis ​​também podem ser definidas cmake-gui.exeno Windows. Veja o Cmake não consegue encontrar o compilador

Plano de fundo : semelhante ao Visual Studio. O CMake suporta todos os tipos de sabores GCC. Ele pesquisa as variáveis ​​de ambiente (CC, CXX, etc.) ou simplesmente tenta chamar o compilador. Além disso, ele irá detectar todos os prefixos (quando compilação cruzada ) e tenta adicioná-lo a todas as binutils do compilador toolchain GNU ( ar, ranlib, strip, ld, nm, objdump, e objcopy).


1
Apenas como um alerta, alguns dos links cmake docs apontam para uma versão realmente antiga do CMake, lembre-se de usar o seletor de versão para corresponder à versão que você tem em seu computador (por exemplo, se você não vir uma plataforma mais recente listada que você precisa).
jrh

39

Para o Ubuntu, instale o seguinte:

sudo apt-get update && sudo apt-get install build-essential

21

Isso aconteceu comigo depois que instalei o Visual Studio 15 de 2017.

O compilador C ++ para Visual Studio 14 2015 não era o problema. Parecia ser um problema com o SDK do Windows 10.

Adicionar os SDKs do Windows 10 ao Visual Studio 14 2015 resolveu o problema para mim.

Veja a captura de tela em anexo.

Insira a descrição da imagem aqui


13

Também experimentei este erro ao trabalhar com o CMake:

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

A caixa de 'aviso' no artigo da biblioteca do MSDN Visual C ++ no Visual Studio 2015 me deu a ajuda de que eu precisava.

O Visual Studio 2015 não vem com C ++ instalado por padrão. Portanto, a criação de um novo projeto C ++ solicitará que você baixe os componentes C ++ necessários.



5

Eu encontrei esse problema ao compilar libgit2-0.23.4. Para mim, o problema era que o compilador C ++ e os pacotes relacionados não foram instalados com o VS2015, portanto, o arquivo "C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat" estava faltando e o Cmake não foi capaz de encontrar o compilador.

Tentei criar manualmente um projeto C ++ na GUI do Visual Studio 2015 ( C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe ) e, ao criar o projeto, recebi uma solicitação para baixar o C ++ e pacotes relacionados.

Depois de baixar os pacotes necessários, pude ver que vcvarsall.bat e Cmake foi capaz de encontrar o compilador e executado com sucesso com o seguinte log:

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

1
Isso funcionou para mim. A criação manual de um projeto C ++ para instalar os pacotes necessários resolveu o problema.
Melaz

5

Eu tive os mesmos erros com CMake. No meu caso, usei a versão errada do Visual Studio na caixa de diálogo inicial do CMake, onde temos que selecionar o compilador do Visual Studio.

Então eu mudei para "Visual Studio 11 2012" e as coisas funcionaram. (Tenho a versão Visual Studio Ultimate 2012 no meu PC). Em geral, tente inserir uma versão mais antiga da versão do Visual Studio na caixa de diálogo de configuração inicial do CMake.


4

Para mim, esse problema foi embora no Windows quando mudei meu projeto para um diretório pai mais superficial, ou seja:

C:\Users\spenc\Desktop\MyProjectDirectory

ao invés de

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

Acho que a origem do problema era que o MSBuild tinha uma restrição de comprimento de caminho de arquivo para 260 caracteres. Isso faz com que o teste básico do compilador que o CMake execute para construir um projeto chamado CompilerIdCXX.vcxprojpara falhar com o erro:

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

porque o comprimento do caminho do arquivo, por exemplo

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

excede a restrição MAX_PATH.

CMake então conclui que não existe um compilador CXX.


2

Certifique-se de ter selecionado a versão correta do Visual Studio. Isso é mais complicado do que parece porque o Visual Studio 2015 é na verdade o Visual Studio 14 e, da mesma forma, o Visual Studio 2012 é o Visual Studio 11. Eu selecionei incorretamente o Visual Studio 15, que é na verdade o Visual Studio 2017, quando tinha 2015 instalado.



1

Você também pode verificar se é o usuário sudo e se tem acesso de LEITURA / GRAVAÇÃO no diretório em que está trabalhando. Tive um problema semelhante no OS X e o resolvi entrando no modo sudo.


1

Para o caso de ajudar alguém como eu no futuro:

Eu tenho esse problema há 24 horas, em 3 máquinas diferentes de 64 bits (Win7, Windows 8.1 VM e laptop WIn 8.1) - enquanto tento construir o WebKit com o VS 2017.

O problema simples aqui é que o compilador VC ++ (ou seja, cl.exe e suas DLLs dependentes) não é visível para CMake. Simples. Ao tornar as pastas VC ++ contendo esses binários visíveis para o CMake e seu prompt de comando funcional (se você estiver executando o Cmake em um prompt de comando), voila! (Além dos pontos-chave levantados por outros, acima)

De qualquer forma, depois de todos os tipos de correções - postadas nesses diversos fóruns - descobri que era SIMPLESMENTE uma questão de garantir que o conteúdo da variável PATH não fosse confundido com vários caminhos BIN do Visual Studio etc; e em vez disso, aponta para:

a) a localização do seu compilador (ou seja, cl.exe para sua versão preferida do Visual Studio), que no meu caso (direcionado à plataforma de 64 bits e desenvolvendo em um host de 64 bits) é: C: \ Arquivos de programas (x86 ) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \ Hostx64 \ x64

b) e, além disso, a pasta que contém uma DLL dependente chamada (da qual cl.exe depende): api-ms-win-crt-runtime-l1-1-0.dll - que em minha máquina é:

C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Remote Debugger \ x64

Esses dois diretórios sendo adicionados a uma variável de caminho do sistema PERSONALIZADA e simplificada (trabalhando em um prompt de comando privilegiado do Admin), eliminaram meu "Nenhum CMAKE_C_COMPILER foi encontrado" e "Nenhum CMAKE_CXX_COMPILER foi encontrado." erros.

Espero que ajude alguém.


1

Recebo exatamente o erro relatado se o ccache estiver habilitado, ao usar o gerador de Xcode do CMake . Desativar o ccache resolveu o problema para mim. A seguir, apresento uma correção / verificação que funciona para MacOS, mas deve funcionar de forma semelhante em outras plataformas.

Aparentemente, é possível usar o gerador Xcode do CMake (e outros) também em combinação com o ccache, conforme descrito aqui . Mas eu nunca experimentei.

# 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
Consegui resolver o mesmo problema certificando-me de que a saída de "xcode-select -p" aponta para minha instalação do Xcode. No meu caso, instalar o Xcode e executar "xcode-select -r" foi o suficiente.
TomTasche

0

Eu atualizei a atualização 2 do Visual Studio 2015 para a atualização 3 do Visual Studio 2015 e isso resolveu meu problema.


Essa solução foi necessária em meu local de trabalho depois que eles enviaram uma atualização do sistema operacional Windows. Usei pelo menos 2 das soluções desta página para corrigir o erro. O erro pode surgir em uma série de condições, então é por isso que existem várias respostas diferentes, mas viáveis.
Natalie Cottrill

0

Eu tive o mesmo problema com cmake-gui ( No CMAKE_CXX_COMPILER could be found.), enquanto a execução do CMake na linha de comando funcionava bem. Depois de adicionar manualmente as entradas

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

para a variável de ambiente PATH funcionou para mim.


0

Para mim funcionou usar o desenvolvedor Command Prompt que vem com o Visual Studio e, em seguida, apenas cdpara your/jcef/dire corrercmake -G "Visual Studio 14 Win64" ..



0

Sei que essa pergunta é sobre o visual studio 2015. Enfrentei esse problema com o visual studio 2017. Quando fiz uma pesquisa no google, fui até esta página. Depois de olhar as primeiras 2,3 respostas, percebi que esse é o problema com a instalação do vc ++. Instalar a carga de trabalho "Desenvolvimento de desktop com c ++" resolveu o problema.

Desenvolvimento de desktop com c ++


0

Procure no Cmakelists.txt se encontrar o ARM, você precisa instalar o C ++ para ARM

São estes pacotes:

Plataforma C ++ Universal do Windows para ARM64 "Não Obrigatório"

Compiladores e bibliotecas do Visual C ++ para ARM "Não obrigatório"

Compiladores e bibliotecas do Visual C ++ para ARM64 "Muito provavelmente necessária"

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

Então os problemas

Nenhum CMAKE_C_COMPILER foi encontrado.

Nenhum CMAKE_CXX_COMPILER foi encontrado.

Pode desaparecer a menos que você especifique o compilador c como clang, e talvez a instalação do clang funcione a favor.

Você pode com remover opcional em cmakelists.txt tanto com # antes de enable_language se você não estiver compilando para ARM.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.