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