tbox源码编译
源码下载
https://gitee.com/tboox/tbox.git
源码编译
# 默认直接编译当前主机平台
$ cd ./tbox
$ xmake
# 编译mingw平台
$ cd ./tbox
$ xmake f -p mingw --sdk=/home/mingwsdk
$ xmake
# 编译iphoneos平台
$ cd ./tbox
$ xmake f -p iphoneos
$ xmake
# 编译android平台
$ cd ./tbox
$ xmake f -p android --ndk=xxxxx
$ xmake
# 交叉编译
$ cd ./tbox
$ xmake f -p linux --sdk=/home/sdk #--bin=/home/sdk/bin
$ xmake
# 使用 xmake.sh 编译
$ ./configure --prefix=$PWD/install
$ make install
例子
工程目录
├── Makefile
├── main.c
└── tbox
├── include
└── lib
其中
main.c
#include "tbox/tbox.h"
#define TB_TRACE_MODULE_NAME "tbox.main"
int main(int argc, char** argv)
{
/* 初始化tbox库
*
* @param priv 平台所需要的私有数据,目前针对android,需要传入JNIEnv* env,其他平台默认传tb_null
* @param data 设置内存池需要的数据地址,默认直接使用系统内存,所以传tb_null就行了
* @param size 设置内存池需要的数据大小
*/
if (!tb_init(tb_null, tb_null))
return 0;
// tb_trace_mode_set(TB_TRACE_MODE_FILE);
// tb_trace_file_set_path("log.txt", tb_false);
// trace
tb_trace_i("hello tbox");
// 初始化一个维护大小写敏感字符串的vector容器,第一参数设置元素自动增长大小,这里使用0表示默认大小
tb_vector_ref_t vector = tb_vector_init(0, tb_element_str(tb_true));
if (vector) {
// insert item
tb_vector_insert_tail(vector, "hello");
tb_vector_insert_tail(vector, "tbox");
// dump all items
tb_for_all(tb_char_t const*, cstr, vector)
{
// trace
tb_trace_i("%s", cstr);
}
// exit vector
tb_vector_exit(vector);
}
// wait
tb_getchar();
// exit tbox
tb_exit();
return 0;
}
Makefile
# 编译器设置
CC = gcc
CFLAGS = -Wall -g
PWD := $(shell pwd)
# 头文件路径
CFLAGS += -I$(PWD)/tbox/include
# 库路径
LDFLAGS += -L$(PWD)/tbox/lib
# 链接的库文件(假设要链接名为 libtbox.a 的库)
LDLIBS += -ltbox -lm -lpthread
# 目标文件和依赖关系
TARGET = main
OBJS = main.o
# 默认目标(生成可执行文件)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
# 源文件依赖关系
main.o: main.c
$(CC) $(CFLAGS) -c $< -o $@
# 清理生成的文件
clean:
rm -f $(OBJS) $(TARGET)
run
make
./main
[tbox.main]: hello tbox
[tbox.main]: hello
[tbox.main]: tbox