MakeFile.am:混合c和c ++,新错误

时间:2012-07-08 07:33:37

标签: c++ c makefile autotools

我们在“c”中有很好的代码库。现在,我们正在转向所有新模块的c ++。我有一个案例,在旧的C代码库中使用很少的c ++类。单独地,两个工作,即c ++模块和c模块单独工作,并提供所需的o \ p。

当我混合它们,即在A.c中调用c ++类时,它会抛出大量与旧代码相关的错误。

在我们的makefile.am中,我们之前曾经有过选项cc = gcc,现在我们在抛出一些错误之后将其更改为cc = g ++。 make末尾的makefile.am创建了一个lib,让我们说libx.a. makefile.am包含各种早期的源文件,即A.c,x.c,y.c ....

我最初在A.c,x.c下修复了错误,假设它们是新的g ++编译器。现在,它开始在x.c下抛出错误,就像我们有各种源文件一样。

解决所有问题非常繁琐。我相信我错过了一些与这些错误相关的编译器标志选项。现在,大多数这些错误都是类型转换错误,我使用static_cast等转换它们。除此之外,很少有misc错误。但是,代码是c中的一个工作代码,它只是混合和更改makefile会抛出这些错误。

问: 1.如何摆脱这些错误? 2.我是否需要使用任何编译器标志来继续以最小的努力工作? 3.在这些过程中有什么东西我做错了吗? 4.对于makefile.am的任何更改,你们建议吗?

对此有任何帮助表示赞赏。如果Q不清楚,请告诉我。

注意:我们使用autoreconf,configure和make运行我们的应用程序。

此致 Santhosh

1 个答案:

答案 0 :(得分:2)

make将使用$CC$(CXX),具体取决于文件的扩展名,并且可以同时使用这两者。例如,以*.cpp结尾的文件使用$(CXX)编译,文件以*.c结尾$(CC)。因此,您不必将ccCC全局设置为g++,除非您的C代码经过适当修改后编译为C ++。