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 @ 2023-08-10 10:08  言午丶  阅读(45)  评论(0编辑  收藏  举报