Как CMake выбирает gcc и g++ для компиляции?
Я новичок в CMake, и мне было интересно, для проекта С++/C в среде LINUX, как CMake может выбирать компиляторы между gcc и g++. Более конкретно, мои вопросы таковы:
- Если проект состоит из файлов .c и .cpp, верно ли, что
файлы .c будут скомпилированы gcc, в то время как файлы .cpp будут
скомпилировано g++?
- Если в проекте есть только файлы c или файлы cpp, то что по умолчанию
компиляция операции для CMake? Можно ли изменить его?
Ответы
Ответ 1
Вскоре, да, оба.
Вы можете калечить почти все. Существуют флаги и переменные, которые связывают расширения с языком; а затем язык для параметров/исполняемых файлов компилятора, которые определяют набор инструментов и создают цели.
Проверьте ссылки на документацию. Это приятные короткие чтения.
Примечание. Вики могут быть устаревшими, но они должны храниться в случае важного и образовательного вопроса.
PS. Существует целая куча связанных опций. Для более длительного чтения вы можете проверить следующие разделы документации: Свойства исходных файлов и Переменные для языков. 2. и 3. исходят из этих разделов.
Ответ 2
Насколько я знаю, CMake только просматривает расширения файлов. Поэтому, если вы переименуете свой .c файл в .cpp, он, насколько мне известно, будет скомпилирован с g++.
Легко изменить это поведение. CMake использует переменные среды, чтобы увидеть, какой компилятор использовать. Если вы хотите изменить компилятор, например, clang и clang++, вы можете просто сделать
export CC = clang
экспорт CXX = clang++
перед запуском cmake.