我有一项新任务要研究满足我们内部需求的C ++跨平台(Mac / Win)实用程序的开发方式。
我已经使用7种不同的"粉红色"语言(例如C#,Java,Managed C ++)进行了开发。
但是在此任务中,要求是支持Mac,而在Mac上运行的.NET确实很痛苦(请其他使用过此工具的人知道这一点)。
因此,我已经开始考虑C ++,是否可以将C ++用于跨平台开发。
该应用程序将不包含任何GUI,但将包含许多System API调用以及许多业务逻辑分析。
是否有可能允许实现此类任务的库?
有可能做到吗?
C ++似乎是一个不错的选择。 使用现代编译器(GCC或Clang,最新版本),使用C ++ 11和标准库。 如果您需要更多资源,可以使用几个库集合,至少检查一下Boost和POCO。
老兄,对这个愚蠢的问题感到抱歉,很遗憾,我不知道本地编译的工作方式,但是我的意思是,如果我要调用简单的CreateProcess winApi函数,它将在两个平台上都适用吗?
它不会直接起作用,这就是为什么您使用库来封装平台之间的差异的原因,例如 std::thread将在编译器及其标准库支持的所有平台上创建一个新线程。
是的,您可以编写标准的ISO C ++并在两个平台上运行程序。
当您需要使用平台特定的API(例如,在Windows上使用Win32和Mac OS上的POSIX API)来实现某些功能时,您要做的是编写自己的包装函数,以抽象出特定于平台的细节,然后在其余部分中使用该包装您的程序。
诸如CMake之类的工具将使您可以使用Visual Studio在Windows上构建程序,而在Mac上构建Xcode,而不必手动管理单独的Visual Studio和Xcode项目文件。
如果我正确理解了您的问题,那么开发跨平台c ++所需的唯一事情就是获得正确的编译器。您可以在两个平台上都使用GCC,甚至可以为Visual Studio和xcode使用2个不同的项目文件。随你(由你决定。就个人而言,我更喜欢GCC。
关于代码本身,这取决于您对代码的处理方式。 STD在两个平台上都可用(std :: vector,std :: string等),因此代码应在两个平台上正确编译。
编辑:顺便说一句,大多数平台特定的东西都可以通过开源代码获得(例如boost,尽管我个人不喜欢boost太多)。如果需要,您甚至可以查看跨平台的其他开源项目(ogre3d等)。