project.pro
main/main.pro (CONFIG += link_prl)
lib/lib.pro (CONFIG += create_prl)
project.pro 內容:
TEMPLATE = subdirs
SUBDIRS = main lib
main.depends = lib
.prl 與動態庫;link_prl 在 qmake 時解析依賴項的 .prl 文件,將庫路徑、依賴庫等信息注入生成的 Makefile;project.pro 生成的 Makefile 包含:sub-main: main/$(MAKEFILE) sub-lib.prl 尚未產生(lib 尚未進入 qmake),導致 main 讀取不到任何依賴信息。調整 SUBDIRS 順序,將 lib 置前:
SUBDIRS = lib main
main.depends = lib
此時 Makefile 變為:
sub-lib: lib/$(MAKEFILE)
sub-main: main/$(MAKEFILE) sub-lib
lib 先 qmake 並生成 prl,main 再 qmake 時即可正確讀取。
create_prl/link_prl 時,**被依賴庫必須在 SUBDIRS 中排在前面**;CONFIG += ordered 顯式聲明順序依賴(Qt 5 支持);include(../lib/lib.pri) 引入,避免 SUBDIRS 時序問題。