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++.