跨平台项目的结构设计
简介
本文是根据经验并结合 [[工程目录结构设计]] 的目录结构所设计的跨平台的项目的一些编译规则
各平台预编译宏
内置宏
- linux: __linux__
- windows: WIN32
、_WIN32
、_WIN32_
、WIN64
、_WIN64
、_WIN64_
- android: __ANDROID__
- armeabi: __arm__
- armeabi-v7: __arm__
- arm64-v8a: __aarch64__
- x86: __i386__
- x86_64: __x86_64__
-更多的宏可 参考这里
- xcode: __APPLE__
- ios: TARGET_OS_IPHONE
- ios 模拟器: TARGET_IPHONE_SIMULATOR
- mac: TARGET_OS_MAC
- 其他的内置宏请参考这里
- 注:系统默认只有宏 __APPLE__
, 其他的宏需要引用头文件 TargetConditionals.h
- FreeBSD: __FreeBSD__
- Unix: __unix
、__unix__
自定义
如果需要自定义宏,建议以以下风格定义
- linux: __LINUX__
- arm: __ARM__
通用预编译宏
- X64
- NODEBUG
编译规则
- 编译脚本放在
builds
下对应的平台的目录里。 - 编译脚本命名
build.sh
。 - 像 arm_linux 这种多种开发板类型的情况,应当使用对应的型号作为平台名称在
builds
下创建目录,例如hisi3531
、hisiv300
。因为在交叉编译的时候需要加载不同的编译器,所以脚本也不通用,不如直接分开会更清晰一些。(笔者没见过需要分别编译几十个平台的项目,十个以下这么管理不会乱) - 使用 cmake 构建的项目,cmake 的缓存文件应放在当前目录下的
build
中 (即builds/(platforms)/build
,该目录由build.sh
脚本创建与删除)。