这玩意的官方文档写的特别简陋,加上方法复杂多样,导致上手难度max,想精通的话全凭试错。。。不说了,上一个很简单的目录结构:
.
├── example.db3
├── include
│ ├── Assertion.h
│ ├── Backup.h
│ ├── Column.h
│ ├── Database.h
│ ├── Exception.h
│ ├── ExecuteMany.h
│ ├── SQLiteCpp.h
│ ├── Statement.h
│ ├── Transaction.h
│ ├── Utils.h
│ └── VariadicBind.h
├── lib
│ ├── libSQLiteCpp.a
│ └── libSQLiteCpp.so
├── main.cpp
├── waf
└── wscript
使用之前生成的库对程序进行编译链接,wscript内容如下:
import os
top ='.'
out='build'
def options(opt):
opt.load('compiler_cxx')
pathInc=os.path.join(opt.path.abspath(),'include')
pathLib=os.path.join(opt.path.abspath(),'lib')
opt.add_option('--include',action='store',default=pathInc,dest='INCLUDE')
opt.add_option('--lib',action='store',default=pathLib,dest='LIB')
def configure(conf):
conf.load('compiler_cxx')
conf.env.LIBPATH=conf.options.LIB
conf.env.INCLUDE=conf.options.INCLUDE
conf.check_cxx(lib='sqlite3',uselib_store='SQLite')
def build(bld):
bld.program(source='main.cpp',target='main',use='SQLite',lib='SQLiteCpp',libpath=bld.env.LIBPATH,includes=bld.env.INCLUDE)
# bld.program(source='main.cpp',target='main',use='SQLite',stlib='SQLiteCpp',libpath=bld.env.LIBPATH,includes=bld.env.INCLUDE)
其中bld系统方式五花八门,给的指导也很简单,有研究这的工夫CMake都手写完几遍了。
顺便有些个人感受:
使用use或者stlib或者lib的时候,要灵活,根据库的路径决定使用方式。
比如在系统路径下的就先check一下,给其指定调用名字,然后后边use一下;而自定义的库就得用lib或者stlib了。
这是使用第三方库的情况,要是自己编译生成的话就不用这么麻烦了,连路径都不用管
总之,所有的辅助编译工具调用的还是gcc,不过是配置和管理的复杂程度而已,对make的理解还是基础。