Pracowałem nad projektem, w którym używałem g ++ do kompilowania kodu C w plikach kończących się na .c. Powodem jest to, że powiedziano mi, że g ++ ma lepsze komunikaty ostrzegawcze.Czy CMake używa g ++ do kompilowania plików C?
Przełączam proces kompilacji dla tego projektu, aby używać CMake. Odkryłem, że początkowo CMake chciał użyć gcc do kompilowania plików C. Nie udało się z powodu takich rzeczy jak deklarowanie zmiennych w czasie użycia. Więc starałem się używać g ++ skompilować pliki C stosując zachodzące
set(CMAKE_C_COMPILER_INIT g++)
w pliku CMakeLists.txt. Ale to skutkuje komunikatem o błędzie:
#error "The CMAKE_C_COMPILER is set to a C++ compiler"
I zostały zmiany nazwy moich plików .c do .cpp, aby rozwiązać ten problem, jako że wydaje się być najprostszym sposobem dla mnie, aby to wszystko działa, a może najlepszym sposobem także. Ale zastanawiałem się, czy można zmusić CMake do używania g ++ do kompilowania plików C.
- Czy możesz to potwierdzić? Powiedziałbym, że jest to bardzo wątpliwe, ponieważ (o ile mi wiadomo) oba są po prostu sterownikami wywołującymi ten sam kompilator z różnymi argumentami (język, włącza ścieżki, dołączoną standardową bibliotekę itp.). Poza tym g ++ nie jest Kompilator C, więc kończysz pisanie bardzo złego C++. – delnan
Jeśli piszesz C, kompilujesz z kompilatorem C. C i C++ to nie to samo. – Kusalananda
Powiedziałaś: "To się nie powiodło z powodu takich rzeczy jak deklarowanie zmiennych w czasie użycia"; to brzmi jak używasz GCC w trybie C89, zamiast trybu C99. Spróbuj dodać '-std = c99' do kompilatora C - jakoś. –