MakeFile.am: смешивание c и C++, новые ошибки

У нас есть хорошая кодовая база в "c". Теперь мы переходим на C++ для всех новых модулей. У меня есть случай, чтобы использовать несколько классов C++ в старой базе кода C. По отдельности оба работают, т. Е. Модуль с ++ и модуль с сами по себе работают и дают желаемое значение o\p.

Когда я смешиваю их, т. Е. Вызываю классы C++ в Ac, это вызывает массу ошибок, связанных со старым кодом.

В нашем makefile.am ранее у нас был параметр cc=gcc, теперь мы изменили его на cc=g++ после того, как он выдал несколько ошибок. Makefile.am с make в конце создает lib, скажем, libx.a. Makefile.am содержит различные более ранние исходные файлы, а именно: Ac,xc,yc...

Я исправил ошибки изначально в Ac,xc, предполагая, что они с новым компилятором g ++. Теперь он начал выдавать ошибки под xc, вот так у нас есть различные исходные файлы.

Это очень утомительно, чтобы исправить все из них. Я считаю, что мне не хватает некоторых опций флага компилятора, связанных с этими ошибками. В настоящее время большинство этих ошибок являются ошибками при типизации, где я конвертировал их с использованием static_cast и т. Д. Кроме этого, несколько ошибок misc. Но код - это рабочий код в c, просто смешивание и изменение makefile приводит к возникновению этих ошибок.

Q: 1. Как избавиться от этих ошибок? 2. Есть ли какой-нибудь флаг компилятора, который мне нужно использовать, чтобы продолжить работу с минимальными усилиями? 3. Что-то не так в этом процессе? 4. Любые изменения в makefile.am, вы, люди, предлагаете?

Любая помощь по этому вопросу приветствуется. Если Q не ясно, пожалуйста, дайте мне знать.

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

С уважением, Сантош

1 ответ

Решение

make будет использовать либо $CC или же $(CXX) в зависимости от расширения файлов, и может использовать оба одновременно. Например, файлы, заканчивающиеся на *.cpp составлены с $(CXX), файлы, заканчивающиеся на *.c с $(CC), Так что вам не нужно устанавливать cc или же CC глобально, чтобы g++ если ваш C код соответствующим образом модифицируется для компиляции как C++.

Другие вопросы по тегам