-
-
Notifications
You must be signed in to change notification settings - Fork 722
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