C++:跨平台

每次都有人问我这个,你跨平台用不同的语言写不就好了,非要搞这么一出
Windows端使用VS进行开发,使用VS打包dll供第三方调用
Android端使用AS进行开发,使用NDK+CMake方式打包so动态链接库供第三方集成
IOS端使用Mac Xcode进行开发,使用Xcode打包为.a/framework供第三方集成
Linux端使用CLion CMake进行开发,使用CMake打包为so动态链接库供第三方调用

 

GCC:一个跨平台的C++编译器,可以在多个平台上编译和运行代码

Clang:一个跨平台的C++编译器,可以在多个平台上编译和运行代码

Visual Studio Code:一个跨平台的集成开发环境,可以在多个平台上编写和调试代码

 

条件编译

复制代码
#ifdef _WIN32
    #include <Windows.h>
#endif

int main()
{
#ifdef _WIN32
  std::string str = "";
#else
  std::cin >> a >> b;
#endif
  std::cout << a + b << std::endl;  

}
复制代码

 

只编译特定平台代码

CMake只编译特定平台的代码文件

if(WIN32)

  FILE(GLOB PLATFORM_SOURCES *_win.cpp)

elseif(LINUX)

  FILE(GLOB PLATFORM_SOURCES *_linux.cpp)

elseif(IOS)

  FILE(GLOB PLATFORM_SOURCES *_ios.cpp)

elseif(ANDROID)

  FILE(GLOB PLATFORM_SOURCES *_android.cpp)

endif()

 

add_library(a_lib ${PLATFORM_SOURCES})

 

统一编码

为了避免不同平台编码导致的乱码问题,都转成unicode编码来做

 

对外接口设计尽可能使用基础类型

 

posted @   言午丶  阅读(124)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-08-10 GIS:Proj4开发库
点击右上角即可分享
微信分享提示