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:
c++
visual-studio
gcc
cmake
visual-studio-2015
Caio Fontes
fonte
fonte
cmake .. -G "Visual Studio 14 2015"
oucmake .. -G "MSYS Makefiles"
(segcc
significaMinGW
). 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.Respostas:
Essas mensagens de erro
ou
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ê 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
Bash shell
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
O CMake é capaz de encontrar e rodar com qualquer / seu compilador padrão? Execute sem dar um gerador
Perfeito se determinar corretamente o gerador a ser usado - como aqui
Visual Studio 14 2015
O que foi que realmente falhou?
No diretório de saída da compilação anterior, procure
CMakeFiles\CMakeError.log
qualquer mensagem de erro que faça sentido para você ou tente abrir / compilar o projeto de teste gerado emCMakeFiles\[Version]\CompilerIdC
|CompilerIdCXX
diretamente da linha de comando (conforme encontrado no log de erros).CMake não consegue encontrar o Visual Studio
Tente selecionar a versão correta do gerador :
Se isso não ajudar, tente definir as variáveis de ambiente do Visual Studio primeiro (o caminho pode variar):
ou use o
Developer Command Prompt for VS2015
atalho no menu Iniciar do Windows emAll 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)
Você inicia o
bash
shell MSys commsys.bat
e apenas tenta chamar diretamentegcc
Aqui ele encontrou
gcc
e está reclamando que não dei nenhum parâmetro para trabalhar.Portanto, o seguinte deve funcionar:
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.Se ainda não estiver funcionando, tente definir o
CXX
caminho do compilador diretamente exportando-o (o caminho pode variar)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-make
programa distribuído com MinGWAinda 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
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.exe
no Windows. Veja o Cmake não consegue encontrar o compiladorPlano 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
, eobjcopy
).fonte
Para o Ubuntu, instale o seguinte:
fonte
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.
fonte
Também experimentei este erro ao trabalhar com o CMake:
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.
fonte
Isso funciona para mim no Ubuntu 17.10 (Artful Aardvark):
fonte
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:
fonte
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.
fonte
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.vcxproj
para 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.
fonte
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.
fonte
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
fonte
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.
fonte
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.
fonte
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.
fonte
Eu atualizei a atualização 2 do Visual Studio 2015 para a atualização 3 do Visual Studio 2015 e isso resolveu meu problema.
fonte
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 entradasC:\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.
fonte
Para mim funcionou usar o desenvolvedor Command Prompt que vem com o Visual Studio e, em seguida, apenas
cd
parayour/jcef/dir
e corrercmake -G "Visual Studio 14 Win64" ..
fonte
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)
fonte
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.
fonte
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"
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.
fonte