220 likes | 433 Views
aimake. http://github/ashun/aimake 张顺 2013-05-23. 为什么使用 aimake aimake 使用 编写 aimakefile 各平台依赖 / 配置 参与 aimake. aimake 简介. aimake 是一个基于 gnu make 的简单的 c/c++ 编译 和 交叉编译集成工具 . 支持 windows, linux , mac osx , ios , android 等系统静态库 , 动态库 , 可执行程序的编译. 为什么使用 aimake. 别 把时间浪费在编译环境上. 为什么使用 aimake.
E N D
aimake http://github/ashun/aimake 张顺 2013-05-23
为什么使用aimake • aimake使用 • 编写aimakefile • 各平台依赖/配置 • 参与aimake
aimake简介 • aimake是一个基于gnu make的简单的c/c++编译和交叉编译集成工具. 支持windows, linux, macosx, ios, android等系统静态库, 动态库, 可执行程序的编译.
为什么使用aimake 别把时间浪费在编译环境上
为什么使用aimake • 各平台统一的编译方式 • windows, visual studio/mingw • linuxgcc, gcc, make • macosx, xcode/gcc, make • ios, xcode • android, ndk aimake
为什么使用aimake • 简单的aimakefile {{{ LOCAL_MODULE := foo LOCAL_SRC_FILES := foo.c include $(BUILD_EXECUTABLE) }}}
为什么使用aimake • 特殊平台优化 • 特别是android, ios, 使用ndk或xcode有些优化参数是加不进去的
aimake使用 • aimake –h -h show this help message and exit -t target platform, support 'android darwinioslinux mingw32', the default is 'mingw32‘ -f aimakefile, the default is 'aimakefile' -m source directory for building multiple target, such as test cases
aimake使用 • copy 'aimakefile' to your project folder • modify variables in aimakfile for your compilation requirement • run 'aimake' (aimake is a soft link pointing to aimake.sh)
aimake使用 • 示例 • 编写foo.c • 编写aimakefile • 执行aimake
编写aimakefile • 基于gnu makefile, 书写规则相同 {{{ package: tar –czfxxx.tar.gz xxx }}}
编写aimakefile • 可配置变量 • LOCAL_MODULE • 模块名, 即编译生成的可执行文件/静态库/动态库的名字 • LOCAL_SRC_FILES • 指定源码文件 • LOCAL_SRC_FILES_EXCLUDE • 过滤不需要编译的文件 • LOCAL_SRC_DIRS • 指定源码目录, aimake会自动搜索目录下的c/c++源码 • LOCAL_SRC_DIRS_EXCLUDE • 过滤不需要编译的目录
编写aimakefile • LOCAL_CFLAGS • LOCAL_CXXFLAGS • LOCAL_LDFLAGS
编写aimakefile • 编译方式 • include $(BUILD_EXECUTABLE) • 可执行文件 • include $(BUILD_STATIC_LIBRARY) • 静态库 • include $(BUILD_DYNAMIC_LIBRARY) • 动态库
各平台依赖/配置 • ios • xcode, iossdk, 需配置ios/init.mk, 指定sdk位置 • android • android ndk, 需配置android/init.mk , 指定sdk位置 • windows • mingw, 在mingw shell下使用 • linux • macosx
参与aimake • 源码目录结构 • aimake.sh • aimake脚本程序, 在这里执行gnu make • main.mk • 在这里将目标平台的init.mk, build_all.mk等 include到一起 • android/ • 负责编译android平台代码的init.mk, build_all.mk等 • darwin/ • ios/ • linux/ • mingw32/
参与aimake • android/ • init.mk • initialize variables of compilation environment, e.g. CC, CXX, CFLAGS, CXXFLAGS • build_all.mk • specify that compile the project into executable • build_executable.mk • specify that compile the project into static library • build_shared_library.mk • specify that compile the project into shared library • build_static_library.mk • contains explicit rules and goals for gnu make
参与aimake • 支持新的系统 每个子目录代表一个系统, 每个子目录实现如下几个文即行 init.mk build_all.mk build_executable.mk build_static_library.mk build_shared_library.mk
参与aimake http://github.com/ashun/aimake