Подтвердить что ты не робот

Как CMake выбирает gcc и g++ для компиляции?

Я новичок в CMake, и мне было интересно, для проекта С++/C в среде LINUX, как CMake может выбирать компиляторы между gcc и g++. Более конкретно, мои вопросы таковы:

  • Если проект состоит из файлов .c и .cpp, верно ли, что файлы .c будут скомпилированы gcc, в то время как файлы .cpp будут скомпилировано g++?
  • Если в проекте есть только файлы c или файлы cpp, то что по умолчанию компиляция операции для CMake? Можно ли изменить его?
4b9b3361

Ответ 1

Вскоре, да, оба.

Вы можете калечить почти все. Существуют флаги и переменные, которые связывают расширения с языком; а затем язык для параметров/исполняемых файлов компилятора, которые определяют набор инструментов и создают цели.

Проверьте ссылки на документацию. Это приятные короткие чтения.

Примечание. Вики могут быть устаревшими, но они должны храниться в случае важного и образовательного вопроса.

PS. Существует целая куча связанных опций. Для более длительного чтения вы можете проверить следующие разделы документации: Свойства исходных файлов и Переменные для языков. 2. и 3. исходят из этих разделов.

Ответ 2

Насколько я знаю, CMake только просматривает расширения файлов. Поэтому, если вы переименуете свой .c файл в .cpp, он, насколько мне известно, будет скомпилирован с g++.

Легко изменить это поведение. CMake использует переменные среды, чтобы увидеть, какой компилятор использовать. Если вы хотите изменить компилятор, например, clang и clang++, вы можете просто сделать

export CC = clang экспорт CXX = clang++

перед запуском cmake.