-
-
Notifications
You must be signed in to change notification settings - Fork 722
v1.5.x编译
ruki edited this page Nov 5, 2015
·
13 revisions
新版本采用全新xmake自动构建框架进行编译,详情参见:
详细的编译过程见上述的链接,不过一般情况下,编译只需要执行:
xmake
使用xmake编译完tbox后,可以执行下面的命令,对tbox进行打包:
# 打包输出到默认目录:tbox/build
xmake p
# 打包输出到指定目录
xmake p -o outdir
打包完成后,会在输出目录自动生成一个名叫 tbox.pkg的包,其目录结构如下:
tbox.pkg
.
├── inc
│ ├── android
│ │ └── tbox.config.h
│ ├── iphoneos
│ │ └── tbox.config.h
│ ├── iphonesimulator
│ │ └── tbox.config.h
│ ├── macosx
│ │ └── tbox.config.h
│ ├── windows
│ │ └── tbox.config.h
│ └── tbox
├── lib
│ ├── debug
│ │ ├── android
│ │ │ └── armv7-a
│ │ │ └── libtbox.a
│ │ ├── iphoneos
│ │ │ └── armv7
│ │ │ └── libtbox.a
│ │ ├── iphonesimulator
│ │ │ └── x86_64
│ │ │ └── libtbox.a
│ │ ├── macosx
│ │ │ └── x86_64
│ │ │ └── libtbox.a
│ │ └── windows
│ │ └── i386
│ │ └── tbox.lib
│ └── release
│ ├── android
│ │ └── armv7-a
│ │ └── libtbox.a
│ ├── iphoneos
│ │ └── armv7
│ │ └── libtbox.a
│ ├── iphonesimulator
│ │ └── x86_64
│ │ └── libtbox.a
│ ├── macosx
│ │ └── x86_64
│ │ └── libtbox.a
│ └── windows
│ └── i386
│ └── tbox.lib
└── xmake.lua
每次打包,会把当前指定编译平台的文件放置到对应目录,想要上述平台更加全面,只需要对每个平台都进行编译打包一边就行了。
inc/tbox 为tbox的头文件,inc/windows/tbox.config.h这些是每个平台下的tbox的相关配置头文件,也需要被包含。
所以使用tbox.config.h,有两种方法:
- 添加一个配置文件的搜索路径,例如inc/windows/,让其能自动找到相关平台对应的tbox.config.h
- 如果你只需要一个平台,例如windows,那么更简单的方式只需要把inc/windows/tbox.config.h复制到inc/tbox下面就行了
在代码中引用tbox头文件只需要包含一个总的头文件就行了,因为tbox的所有头文件都是相对路径自包含的(除了tbox.config.h),例如:
#include "tbox/tbox.h"
如何链接库就不多说了,需要注意的一点是,如果当前链接的是debug的版本,那么整个工程里面需要定义一个全局的宏开关:__tb_debug__
,这个是必须的,而release版本就不需要任何开关了。
下面给个最简单使用tbox的空工程代码:
#include "tbox/tbox.h"
int main(int argv, char** argv)
{
// 初始化整个tbox库环境,这个是必须的,但是只需要在程序最开始执行一下
if (!tb_init(tb_null, tb_null, tb_null, 0)) return 0;
// 打印输出,需要自己加换行符
tb_printf("hello world!\n");
// 只在debug下打印输出一行
tb_trace_d("hello world");
// 在debug/release下打印输出一行
tb_trace_i("hello world");
// debug下进行断言检测
tb_assert(1 == 1);
tb_assert_abort(1 != 2);
// 空等待
getchar();
// 退出整个tbox环境,这步会释放tbox占用的所有资源,如果是debug版本,还会在终端输出内存泄露检测信息等等。
tb_exit();
return 0;
}
注:在windows下vs中使用 tbox 需要额外注意的一点是,vs的c编译器只支持c89的语法,而tbox的最低支持标准也是c99以后的,所以用c89的编译器是编译不过的,包含tbox.h的头文件,编译器也会报错。
因此,想要在vs中使用tbox,需要采用c++编译,可以直接在*.cpp的文件中使用tbox,或者在使用tbox的*.c的文件采用/TP选项,强制作为c++来编译。。