Próbuję stworzyć rozwiązanie Visual Studio z CMake, aby skompilować najnowszą wersję aseprite, a CMake ciągle daje mi:
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
Pobrałem już GCC i używam Visual Studio 2015 .
Śledzę ten samouczek:
c++
visual-studio
gcc
cmake
visual-studio-2015
Caio Fontes
źródło
źródło
cmake .. -G "Visual Studio 14 2015"
lubcmake .. -G "MSYS Makefiles"
(jeśligcc
to znaczyMinGW
). Często widziałem te pytania (jak tutaj , tutaj lub tutaj ) i myślę, że brakuje nam połączonej / samouczkowej odpowiedzi na SO.Odpowiedzi:
Te komunikaty o błędach
lub
po prostu oznacza, że CMake nie mógł znaleźć kompilatora C / CXX, aby skompilować prosty program testowy (jedna z pierwszych rzeczy, które CMake próbuje podczas wykrywania twojego środowiska kompilacji).
Kroki prowadzące do znalezienia problemu zależą od środowiska kompilacji, które chcesz wygenerować. Poniższe samouczki są zbiorem odpowiedzi na temat przepełnienia stosu i niektórych moich własnych doświadczeń z CMake w systemie Microsoft Windows 7/8/10 i Ubuntu 14.04.
Warunki wstępne
Masz czysty katalog kompilacji (ponieważ CMake buforuje rzeczy od ostatniej próby) np. Jako podkatalog twojego drzewa źródłowego
Windows cmd.exe
Bash shell
i upewnij się, że powłoka poleceń wskazuje na nowo utworzony katalog wyjściowy binarny.
Ogólne rzeczy, które możesz / powinieneś spróbować
Czy CMake może znaleźć i uruchomić z dowolnym / twoim domyślnym kompilatorem? Biegnij bez generatora
Idealnie, jeśli prawidłowo określił generator do użycia - jak tutaj
Visual Studio 14 2015
Co właściwie zawiodło?
W poprzednim katalogu wyjściowym kompilacji poszukaj
CMakeFiles\CMakeError.log
wszelkich komunikatów o błędach, które mają dla Ciebie sens, lub spróbuj otworzyć / skompilować projekt testowy wygenerowany pod adresemCMakeFiles\[Version]\CompilerIdC
|CompilerIdCXX
bezpośrednio z wiersza poleceń (zgodnie z dziennikiem błędów).CMake nie może znaleźć programu Visual Studio
Spróbuj wybrać odpowiednią wersję generatora :
Jeśli to nie pomoże, spróbuj najpierw ustawić zmienne środowiskowe programu Visual Studio (ścieżka może się różnić):
lub użyj
Developer Command Prompt for VS2015
skrótu w menu Start systemu Windows podAll Programs
/Visual Studio 2015
/Visual Studio Tools
(dzięki @Antwane za podpowiedź).Tło : CMake obsługuje wszystkie wersje i smaki programu Visual Studio (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate itp.). Aby określić lokalizację kompilatora, wykorzystuje kombinację przeszukiwania rejestru (np. At
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
), systemowych zmiennych środowiskowych i - jeśli żaden z pozostałych czegoś nie wymyślił - po prostu próbuje wywołać kompilator.CMake nie może znaleźć GCC (MinGW / MSys)
Uruchamiasz
bash
powłokę MSys zmsys.bat
i po prostu próbujesz bezpośrednio wywołaćgcc
Tutaj znalazł
gcc
i narzeka, że nie podałem mu żadnych parametrów do pracy.Więc powinno działać:
Jeśli nie znaleziono GCC, wywołaj,
export PATH=...
aby dodać ścieżkę kompilatora (zobacz Jak ustawić zmienną środowiskową PATH w skrypcie CMake? ) I spróbuj ponownie.Jeśli nadal nie działa, spróbuj ustawić
CXX
ścieżkę kompilatora bezpośrednio, eksportując ją (ścieżka może się różnić)Aby uzyskać więcej informacji, zobacz Jak określić nową ścieżkę GCC dla CMake
Uwaga : Korzystając z generatora „MinGW Makefiles” należy korzystać z
mingw32-make
programu dystrybuowanego z MinGWWciąż nie działa? To jest dziwne. Upewnij się, że kompilator tam jest i ma prawa do wykonywania (zobacz także rozdział dotyczący warunków wstępnych powyżej).
W przeciwnym razie ostatnią deską ratunku CMake jest nie próbowanie przeszukiwania kompilatora samodzielnie i ustawianie zmiennych wewnętrznych CMake bezpośrednio przez
Aby uzyskać więcej informacji, zobacz Cmake nie honoruje -D CMAKE_CXX_COMPILER = g ++ i kompilator ustawień błędów Cmake
Alternatywnie te zmienne można również ustawić
cmake-gui.exe
w systemie Windows. Zobacz Cmake nie może znaleźć kompilatoraTło : podobnie jak w przypadku programu Visual Studio. CMake obsługuje wszystkie rodzaje smaków GCC. Przeszukuje zmienne środowiskowe (CC, CXX itp.) Lub po prostu próbuje wywołać kompilator. Ponadto wykryje żadnych przedrostków (kiedy cross-kompilacji ) i stara się, aby dodać go do wszystkich binutils kompilatora GNU toolchain (
ar
,ranlib
,strip
,ld
,nm
,objdump
, iobjcopy
).źródło
W przypadku Ubuntu zainstaluj poniższe rzeczy:
źródło
Zdarzyło mi się to po zainstalowaniu programu Visual Studio 15 2017.
Kompilator C ++ dla programu Visual Studio 14 2015 nie był problemem. Wydawało się, że jest to problem z zestawem SDK systemu Windows 10.
Dodanie zestawów SDK systemu Windows 10 do programu Visual Studio 14 2015 rozwiązało problem.
Zobacz załączony zrzut ekranu.
źródło
Podczas pracy z CMake również wystąpił ten błąd:
Pole „Ostrzeżenie” w artykule biblioteki MSDN Visual C ++ w programie Visual Studio 2015 dało mi potrzebną pomoc.
Program Visual Studio 2015 nie jest dostarczany z C ++ zainstalowanym domyślnie. Tak więc podczas tworzenia nowego projektu C ++ pojawi się monit o pobranie niezbędnych komponentów C ++.
źródło
To działa dla mnie w Ubuntu 17.10 (Artful Aardvark):
źródło
Napotkałem ten problem podczas tworzenia biblioteki libgit2-0.23.4. Dla mnie problem polegał na tym, że kompilator C ++ i powiązane pakiety nie zostały zainstalowane z VS2015, dlatego brakowało pliku „C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat” i Cmake nie mógł znaleźć kompilator.
Próbowałem ręcznie stworzyć projekt C ++ w GUI Visual Studio 2015 ( C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe ) i podczas tworzenia projektu dostałem monit o pobranie C ++ i powiązane pakiety.
Po pobraniu wymaganych pakietów mogłem zobaczyć, że vcvarsall.bat & Cmake był w stanie znaleźć kompilator i pomyślnie wykonać z następującym dziennikiem:
źródło
Miałem te same błędy z CMake. W moim przypadku użyłem niewłaściwej wersji Visual Studio w początkowym oknie dialogowym CMake, w którym musimy wybrać kompilator Visual Studio.
Potem zmieniłem go na „Visual Studio 11 2012” i wszystko działało. (Mam wersję Visual Studio Ultimate 2012 na moim komputerze). Ogólnie spróbuj wprowadzić starszą wersję programu Visual Studio w początkowym oknie dialogowym konfiguracji CMake.
źródło
U mnie ten problem zniknął w systemie Windows, kiedy przeniosłem projekt do płytszego katalogu nadrzędnego, tj. Do:
C:\Users\spenc\Desktop\MyProjectDirectory
zamiast
C:\Users\spenc\Desktop\...\MyProjectDirectory
.Myślę, że źródłem problemu było to MSBuild ma ograniczenie długości ścieżki pliku do 260 znaków. Powoduje to, że CMake wykonuje podstawowy test kompilatora, aby skompilować projekt wywoływany
CompilerIdCXX.vcxproj
niepowodzeniem z błędem:C1083: Cannot open source file: 'CMakeCXXCompilerId.cpp'
ponieważ długość ścieżki do pliku np
C:\Users\spenc\Desktop\...\MyProjectDirectory\build\CMakeFiles\...\CMakeCXXCompilerId.cpp
przekracza ograniczenie MAX_PATH.
Następnie CMake stwierdza, że nie ma kompilatora CXX.
źródło
Upewnij się, że wybrano poprawną wersję programu Visual Studio. Jest to trudniejsze, niż się wydaje, ponieważ Visual Studio 2015 to w rzeczywistości Visual Studio 14, a podobnie Visual Studio 2012 to Visual Studio 11. Podczas instalacji 2015 nieprawidłowo wybrałem Visual Studio 15, czyli w rzeczywistości Visual Studio 2017.
źródło
Żadne z rozwiązań tutaj nie rozwiązuje mojego problemu - tylko wtedy, gdy instaluję Windows Update dla uniwersalnego środowiska uruchomieniowego C.
Teraz CMake działa i nie zawiesza się więcej linków z programu Visual Studio.
Aktualizacja dla Universal C Runtime w systemie Windows
źródło
Możesz także upewnić się, że jesteś użytkownikiem sudo i masz dostęp do odczytu / zapisu w katalogu, w którym pracujesz. Miałem podobny problem na OS X i naprawiłem go po prostu wchodząc w tryb sudo.
źródło
Na wypadek, gdyby pomogło to komuś takiemu jak ja w przyszłości:
Mam ten problem od 24 godzin na 3 różnych 64-bitowych maszynach (Win7, Windows 8.1 VM i laptop WIn 8.1) - podczas próby zbudowania WebKit z VS 2017.
Prosty problem polega na tym, że kompilator VC ++ (tj. Cl.exe i zależne od niego biblioteki DLL) nie jest widoczny dla CMake. Prosty. Udostępniając foldery VC ++ zawierające te pliki binarne dla CMake i działającego wiersza poleceń (jeśli uruchamiasz Cmake z wiersza poleceń), voila! (Oprócz kluczowych kwestii podniesionych przez innych powyżej)
W każdym razie, po wszelkiego rodzaju poprawkach - jak opublikowano na tych wielu forach - odkryłem, że chodziło PO PROSTU o upewnienie się, że zawartość zmiennej PATH nie jest zaśmiecona wieloma ścieżkami BIN programu Visual Studio itp.; zamiast tego wskazuje na:
a) lokalizacja kompilatora (np. cl.exe dla preferowanej wersji programu Visual Studio), która w moim przypadku (przeznaczona dla platformy 64-bitowej i programowana na hoście 64-bitowym) to: C: \ Program Files (x86 ) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \ Hostx64 \ x64
b) a ponadto folder zawierający zależną bibliotekę DLL o nazwie (od której zależy cl.exe): api-ms-win-crt-runtime-l1-1-0.dll - który na moim komputerze to:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Remote Debugger \ x64
Dodanie tych dwóch katalogów do uproszczonej zmiennej CUSTOM Ścieżki systemowej (działającej pod poleceniem uprzywilejowanym przez administratora) wyeliminowało „Nie znaleziono CMAKE_C_COMPILER” i „Nie można znaleźć CMAKE_CXX_COMPILER”. błędy.
Mam nadzieję, że to komuś pomoże.
źródło
Otrzymuję dokładnie zgłoszony błąd, jeśli pamięć podręczna jest włączona, podczas korzystania z generatora Xcode CMake . Wyłączenie ccache rozwiązało problem. Poniżej przedstawiam poprawkę / sprawdzenie, które działa na MacOS, ale powinno działać podobnie na innych platformach.
Najwyraźniej możliwe jest użycie generatora Xcode CMake (i innych) również w połączeniu z ccache, jak opisano tutaj . Ale sam nigdy tego nie wypróbowałem.
źródło
Zaktualizowałem aktualizację 2 programu Visual Studio 2015 do wersji 3 programu Visual Studio 2015 i rozwiązałem problem.
źródło
Miałem ten sam problem z cmake-gui (
No CMAKE_CXX_COMPILER could be found.
), podczas gdy uruchomienie CMake z wiersza poleceń działało dobrze. Po ręcznym dodaniu wpisówC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
do zmiennej środowiskowej PATH, to zadziałało.
źródło
Dla mnie to działało w użyciu autora wiersza polecenia, które pochodzi z programu Visual Studio, a potem po prostu
cd
sięyour/jcef/dir
i metęcmake -G "Visual Studio 14 Win64" ..
źródło
Miałem ten sam problem.
Próbowałem zainstalować dlib na moim komputerze i dał mi ten błąd. Poradnik wspomniany w pytaniu prowadzi do pobrania programu Visual Studio 2017. Rozwiązałem ten problem, odinstalowując VS 2017 i instalując VS 2015
VS 2015 można zainstalować za pomocą tego wątku stackoverflow: Jak pobrać program Visual Studio Community Edition 2015 (nie 2017)
źródło
Wiem, że to pytanie dotyczy Visual Studio 2015. Napotkałem ten problem w Visual Studio 2017. Podczas wyszukiwania w Google trafiłem na tę stronę. Po przejrzeniu pierwszych 2,3 odpowiedzi stwierdziłem, że jest to problem z instalacją vc ++. Zainstalowanie obciążenia „Programowanie pulpitu w języku C ++” rozwiązało problem.
źródło
Zajrzyj do Cmakelists.txt, jeśli znajdziesz ARM, musisz zainstalować C ++ dla ARM
To te pakiety:
C ++ Universal Windows Platform for ARM64 „niewymagane”
Kompilatory Visual C ++ i biblioteki dla ARM „niewymagane”
Kompilatory Visual C ++ i biblioteki dla ARM64 „bardzo prawdopodobne wymagane”
Potem problemy
Nie znaleziono CMAKE_C_COMPILER.
Nie znaleziono CMAKE_CXX_COMPILER.
Może zniknąć, chyba że określisz kompilator c, taki jak clang, a może zainstalowanie clang będzie działać na inną korzyść.
Możesz opcjonalnie usunąć w cmakelists.txt zarówno z # przed enable_language, jeśli nie kompilujesz dla ARM.
źródło