我有一个静态库,它在OS和Windows版本之间共享了很多源代码。这两个版本都使用CMAKE。由于最近的请求,我考虑了linux版本。
我的问题是:
有人能提供一些关于如何完成这项任务的洞察力吗?
发布于 2009-07-16 15:51:13
我想真的建议不要混合目标C和C++。虽然在OS上,它们都是由GCC编写的,从而使之成为可能,但碳库和可可库并不是真正的混合。Carbon和Cocoa都是完全独立的窗口库。然而,在OSX10.2中,可以将它们混合在窗口级别(碳应用程序可以托管Cocoa窗口),任何超过10.2的内容都应该能够将库混合到小部件级别。因此,如果您的库的所有用户都在使用OS的更新版本,则有可能.我还是不推荐。另外,你必须链接到所有这些额外的代码。
更改为.mm的效果实际上取决于编译器。我猜您使用的是gcc,因为您的库将用于所有三个平台,因此gcc可以将.mm代码编译为C++,如下所示。
gcc -x c++ [sourcefile]发布于 2009-07-16 15:53:44
苹果公司发布了一款不错的关于混合碳和可可的指南。基本上这两个是正交的,所以你可以混合它们。
无论如何,我不认为把你的.cpp改成.mm是个好主意,也不把C++和Objective混在一起。只需在单独的.m文件中迁移到Cocoa即可。
编辑:如果您将.cpp更改为.mm,您将不再编译其他平台上的文件。所以我的建议是创建新的可可类。其中一些当然会引用一些c++代码,包括c++头。它们将具有.mm扩展。
https://stackoverflow.com/questions/1138457
复制相似问题