Skip to content

v1.4.x编译

ruki edited this page Sep 1, 2015 · 1 revision

在大部分常用平台下,都能自动检测平台环境,直接编译,编译过程非常简单。

编译debug版本:详细的调试输出、各种assert、启用所有内存检测和分析

    # 进入tbox工程目录
    cd ./tbox

    # 重建所有,支持对linux、mac、msys、cygwin编译环境的自动探测
    # 默认编译的就是调试版本,也可以通过make f DEBUG=y手动开启调试模式。
    # 自动探测ccache支持以加速编译过程
    # 如果在windows上用msvc的编译,需要先双击运行tbox/msys.bat脚本,进入msys的shell环境
    make r

编译release版本:会开启所有优化,禁用所有assert和调试输出,strip掉所有函数符号信息,使得bin最小化。

    cd ./tbox
    # 配置关闭debug模式,注:配置过程只需一遍,长期有效
    make f DEBUG=n
    make r

编译profile版本:如果要进行性能分析,可以通过如下配置进行编译,相当于release版本加上所有符号信息。

    cd ./tbox
    make f DEBUG=n PROF=y
    make r

手动配置编译linux版本

    cd ./tbox
    # ARCH支持x86、x64
    make f PLAT=linux ARCH=x86 DEBUG=y
    make r

手动配置编译mac版本

    cd ./tbox
    # ARCH支持x86、x64
    make f PLAT=mac ARCH=x64 DEBUG=y
    make r

手动配置编译ios版本

    cd ./tbox
    # ARCH支持armv6、armv7、armv7s、arm64
    make f PLAT=ios ARCH=armv7 SDK=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/
    make r

编译ios的universal版本,带armv7+arm64,需要lipo支持

    cd ./tbox
    make lipo ARCH1=armv7 ARCH2=arm64 SDK=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/

手动配置编译android版本:需要手动设置NDK目录、BIN目录

    cd ./tbox
    # ARCH支持armv5te、armv6
    make f PLAT=android ARCH=armv5te SDK=/home/xxxx/android-ndk-r9d BIN=/home/xxxx/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin
    make r

在windows上用msvc编译:需要运行msys.bat脚本,进入msys shell环境,比起mingw、cygwin,用msvc编译,会自动生成pdb的符号文件,方便调试。

    #进入tbox目录,双击运行 ./msys.bat
    make f PLAT=msvc ARCH=x86
    make r

在windows上用mingw编译:编译较慢

    #进入系统安装的msys环境,配置是可选,默认支持自动检测
    make f PLAT=mingw ARCH=x86
    make r

在windows上用mingw编译:需要mingw提供的libgcc.a进行最后的链接

    #进入系统安装的msys环境,配置是可选,默认支持自动检测
    cd ./tbox
    make f PLAT=mingw ARCH=x86
    make r

在windows上用cygwin编译:最后会依赖cygwin的动态库

    #进入cygwin,配置是可选,默认支持自动检测
    cd ./tbox
    make f PLAT=cygwin ARCH=x86
    make r

在cygwin上用mingw进行编译:需要设置mingw的BIN目录,以及gcc的命令前缀:PRE

    #进入cygwin
    cd ./tbox
    make f PLAT=mingw ARCH=x86 BIN="/home/xxx/bin" PRE="i386-mingw32-"
    make r

在linux上用mingw进行编译:编译速度比在windows上快很多

    cd ./tbox
    make f PLAT=mingw ARCH=x86
    make r

在mac上用mingw进行编译:编译速度比在windows上快很多

    cd ./tbox
    make f PLAT=mingw ARCH=x86 BIN=/usr/local/i386-mingw32-4.3.0/bin/
    make r

v1.4.8_dev分支重建了整个makefile架构,采用*.pkg依赖包模式模块化对第三方库的依赖, 上述编译方式不变,增加对第三方库的编译配置, 具体更新内容参看:更新,新增配置依赖包选项:

  cd ./tbox
  # 删除配置,会自动进入依赖包探测,生成新配置,如果不删除,则会缓存最近配置,根据自己需要来选择是否删除,这步(可选)
  rm .config.mak
  # 自动探测当前平台支持的依赖包 
  make f
  # 手动禁用某个依赖包
  make f POLARSSL=n ZLIB=n SQLITE3=n OPENSSL=n
  # 如果当前探测不到需要支持的依赖包,也可方便的自己启用,但是同时要指定响应的编译选项才行
  # 当然也可以直接编辑./pkg/xxxx.pkg/manifest.json包清单文件,来设置启用某个包
  make f MYSQL=y CFLAG="-I/opt/local/mysql/mysql" LDFLAG="-L/opt/local/mysql -lmysqlclient"
  # 重新编译
  # 生成的安装包在./bin/tbox.pkg,也是采用*.pkg包格式打包,方便copy
  make r
  # 安装包路径也是可以设置的,默认为./bin
  make f INSTALL=/xxxxx
  # 设置依赖包路径,默认在./pkg下
  make f PACKAGE=/xxxxx
Clone this wiki locally