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

Caio Fontes
fonte
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).

Florian
fonte
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
Vishnu
fonte
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

Wim Vanhenden
fonte
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.

Natalie Cottrill
fonte
8

Isso funciona para mim no Ubuntu 17.10 (Artful Aardvark):

apt-get update
apt-get install build-essential
purval_patel
fonte
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
Aksh1801
fonte
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.

TSac
fonte
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.

spenceryue
fonte
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.

Aryaman Gupta
fonte
1

Nenhuma das soluções aqui resolve meu problema - apenas quando eu instalo o Windows Update para tempo de execução C universal.

Agora o CMake está funcionando e não há mais interrupções de link no Visual Studio.

Atualização para Universal C Runtime no Windows

Meir Gerenstadt
fonte
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.

daniel rubambura
fonte
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.

GreatCentralSun
fonte
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>
Normanius
fonte
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.

Triplos
fonte
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.

capacete
fonte
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" ..

Marc Dirven
fonte
0

Eu tive o mesmo problema.

Eu estava tentando instalar o dlib na minha máquina e deu-me este erro. O tutorial mencionado na pergunta leva ao download do visual studio 2017. Resolvi isso desinstalando o VS 2017 e instalando o VS 2015

É possível instalar o VS 2015 por meio deste thread stackoverflow: Como baixar o Visual Studio Community Edition 2015 (não 2017)

Aprajita Verma
fonte
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 ++

Asad
fonte
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.

Dealazer
fonte