Мы пишем приложение, главным образом, в C
, но некоторые подмодули написаны в C++
(в Linux). Проблема заключается в том, как писать файлы CMakeLists.txt
для использования g++
для некоторых подкаталогов и gcc
для другого.
Смешивание C и С++ с помощью CMAKE
Ответ 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С++.