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

Смешивание C и С++ с помощью CMAKE

Мы пишем приложение, главным образом, в C, но некоторые подмодули написаны в C++ (в Linux). Проблема заключается в том, как писать файлы CMakeLists.txt для использования g++ для некоторых подкаталогов и gcc для другого.

4b9b3361

Ответ 1

Компилятор и компоновщик обычно определяются расширением файла, если он не задан иначе. До тех пор, пока окончательные окончания файла прекрасны, ваш код скомпилирован и связан с правильным компилятором.

На стороне заметьте, не забудьте сделать правильные объявления extern C, если вы смешиваете C и С++.

Ответ 2

CMake делает это автоматически. Вы можете свободно смешивать файлы обоих типов в файле CMakeLists.txt:

. . .
add_executable(
    my_program
    code.cpp
    more_code.c
)

Я делаю это все время, и он просто работает.

Ответ 3

Вы можете установить свойство LANGUAGE исходных файлов на "CXX". См. документация.

Ответ 4

Разница между g++ и gcc заключается в том, что g++ передает -lstdС++ в компоновщик. Просто добавьте стандартную библиотеку С++ в качестве явной зависимости от модулей С++.

Чтобы быть ясным, gcc может скомпилировать код на С++. gcc и g++ в этом отношении одинаковы. Разница лишь в том, что при использовании g++ вам не нужно явно указывать компилятору ссылку на libstdС++.