使用waf鏈結第三方庫

2021-10-25 12:05:21 字數 1953 閱讀 3140

.

├── 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

import os

top =

'.'out=

'build'

defoptions

(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的理解還是基礎。

CMAKE使用鏈結第三方SO庫

cmake 命名變數 set inc dir usr local include set link dir usr local lib set source files main.cpp 去 找標頭檔案 相當於gcc clang 中的 i i的大寫字母 引數 include directories ...

Qt使用第三方庫

src 3rdparty lib bin 上面的資訊在 pro 檔案中提供,以便 qmake 可以解析它並生成 makefiles。makefiles 包含編譯器和鏈結器生成輸出所需的所有資訊,無論它是可執行檔案,另乙個庫檔案等。使用 includepath 變數提供 mylibrary 的 inc...

使用第三方庫pyinstaller

pyinstaller庫是python的第三方庫 可以在cmd 中使用 pip install pyinstaller安裝 pyinstaller庫可以將python檔案打包成可以在windows linux macos 執行的檔案 並且無需安裝python環境 這樣就可以把自己寫的 傳送給小夥伴啦...