Смешивание C и C ++ с CMAKE - PullRequest
       30

Смешивание C и C ++ с CMAKE

20 голосов
/ 11 ноября 2011

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

Ответы [ 4 ]

21 голосов
/ 11 ноября 2011

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

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

9 голосов
/ 12 ноября 2011

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

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

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

4 голосов
/ 11 ноября 2011

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

1 голос
/ 11 ноября 2011

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

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

...