1 / 20

aimake

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.

heinz
Download Presentation

aimake

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. aimake http://github/ashun/aimake 张顺 2013-05-23

  2. 为什么使用aimake • aimake使用 • 编写aimakefile • 各平台依赖/配置 • 参与aimake

  3. aimake简介 • aimake是一个基于gnu make的简单的c/c++编译和交叉编译集成工具. 支持windows, linux, macosx, ios, android等系统静态库, 动态库, 可执行程序的编译.

  4. 为什么使用aimake 别把时间浪费在编译环境上

  5. 为什么使用aimake • 各平台统一的编译方式 • windows, visual studio/mingw • linuxgcc, gcc, make • macosx, xcode/gcc, make • ios, xcode • android, ndk  aimake

  6. 为什么使用aimake • 简单的aimakefile {{{ LOCAL_MODULE := foo LOCAL_SRC_FILES := foo.c include $(BUILD_EXECUTABLE) }}}

  7. 为什么使用aimake • 特殊平台优化 • 特别是android, ios, 使用ndk或xcode有些优化参数是加不进去的

  8. 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

  9. 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)

  10. aimake使用 • 示例 • 编写foo.c • 编写aimakefile • 执行aimake

  11. 编写aimakefile • 基于gnu makefile, 书写规则相同 {{{ package: tar –czfxxx.tar.gz xxx }}}

  12. 编写aimakefile • 可配置变量 • LOCAL_MODULE • 模块名, 即编译生成的可执行文件/静态库/动态库的名字 • LOCAL_SRC_FILES • 指定源码文件 • LOCAL_SRC_FILES_EXCLUDE • 过滤不需要编译的文件 • LOCAL_SRC_DIRS • 指定源码目录, aimake会自动搜索目录下的c/c++源码 • LOCAL_SRC_DIRS_EXCLUDE • 过滤不需要编译的目录

  13. 编写aimakefile • LOCAL_CFLAGS • LOCAL_CXXFLAGS • LOCAL_LDFLAGS

  14. 编写aimakefile • 编译方式 • include $(BUILD_EXECUTABLE) • 可执行文件 • include $(BUILD_STATIC_LIBRARY) • 静态库 • include $(BUILD_DYNAMIC_LIBRARY) • 动态库

  15. 各平台依赖/配置 • ios • xcode, iossdk, 需配置ios/init.mk, 指定sdk位置 • android • android ndk, 需配置android/init.mk , 指定sdk位置 • windows • mingw, 在mingw shell下使用 • linux • macosx

  16. 参与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/

  17. 参与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

  18. 参与aimake • 支持新的系统 每个子目录代表一个系统, 每个子目录实现如下几个文即行 init.mk build_all.mk build_executable.mk build_static_library.mk build_shared_library.mk

  19. 参与aimake http://github.com/ashun/aimake

  20. end

More Related