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编码来做
对外接口设计尽可能使用基础类型