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

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

  1. Если проект состоит из файлов .c и .cpp, верно ли, что
    файлы .c будут скомпилированы gcc, а файлы .cpp будут
    скомпилировано g ++?
  2. Если в проекте есть только файлы c или cpp, то по умолчанию
    операция компиляции для CMake? Удастся ли это изменить?

32

Решение

Короче, да, обоим.

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

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

  1. Изменить компилятор / набор инструментов
  2. Расширения для каждого языка
  3. Переменная ЯЗЫК

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

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

15

Другие решения

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

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

экспорт CC = лязг
экспорт CXX = clang ++

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

12

По вопросам рекламы [email protected]