Jak CMake wybiera gcc i g ++ do kompilacji?


Jestem nowy w CMake i zastanawiałem się nad projektem C ++/C w środowisku LINUX, w jaki sposób CMake może wybierać kompilatory między gcc i g ++. A dokładniej, moje pytania są następujące:
  • Jeśli projekt składa się z plików .c i .cpp, czy to prawda pliki .c zostaną skompilowane przez gcc, a pliki .cpp - są kompilowane g ++
  • Jeśli projekt zawiera tylko pliki c lub pliki cpp, to co to jest domyślna operacja kompilacji dla CMake Czy będzie można to zmienić

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Krótko mówiąc, tak dla obu.
Możesz zepsuć prawie wszystko. Istnieją flagi i zmienne, które wiążą rozszerzenia z językiem, a następnie język z opcjami kompilatora/pliku wykonywalnego, które definiują zestawy narzędzi i cele kompilacji.
Sprawdź poniższe linki do dokumentacji. To kilka fajnych krótkich lektur.

Uwaga: wiki może być nieaktualne, ale powinno tak być w przypadku ważnego i edukacyjnego pytania.
PS. Istnieje wiele powiązanych opcji. Aby uzyskać dłuższą lekturę, możesz sprawdzić następujące sekcje dokumentacji:

właściwości plików źródłowych
http://www.cmake.org/cmake/hel ... Files
i

zmienne dla języków
http://www.cmake.org/cmake/hel ... es... 2. i 3. zaczynają się od tych sekcji.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

O ile wiem, CMake patrzy tylko na rozszerzenia plików. Więc jeśli zmienisz nazwę swojego pliku .c na .cpp, będzie on skompilowany z g ++, o ile wiem.
To zachowanie można łatwo zmienić. CMake używa zmiennych środowiskowych, aby zobaczyć, którego kompilatora użyć. Jeśli chcesz zmienić kompilator na przykład na clang i clang ++, możesz to po prostu zrobić
eksport CC = clang
eksport CXX = clang ++
przed uruchomieniem cmake.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się