程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> qmake prl TEMPLATE=subdir之錯誤小記

qmake prl TEMPLATE=subdir之錯誤小記

編輯:關於C語言

    最近,在使用qmake,prl和TEMPLATE=subdir時犯了一個錯誤。記錄之以便以後查看。

項目結構:

 

  1. project.pro 
  2. main\ 
  3.     \__ main.pro 
  4. lib\ 
  5.     \__ lib.pro 

    project.pro中寫的是:

   

  1. TEMPLATE  = subdirs 
  2. SUBDIRS = main lib 
  3. main.depends = lib

    main.pro中有一句:

 

  1. CONFIG += link_prl 

    lib.pro中有一句:

 

  1. CONFIG += create_prl 

    錯誤的現象是:

1、lib的prl文件及動態庫生成成功。

2、main工程沒有讀取prl中的內容。

 

    起初,我以為是鏈接期ld的問題,後來經過實踐,排除了這個可能。

    最終,我在Makefile中發現了奇怪的東西。是project.pro對應的Makefile文件:

 

  1. sub-main: main/$(MAKEFILE) sub-lib 
  2.     cd main/ && $(MAKE) -f $(MAKEFILE) 

    也就是說,

事實一:main先從main.pro生成自己的Makefile,再make sub-lib目標。

    同時,我們知道

事實二:prl是在qmake階段進行讀取的

    因此,我們得出:

推論一:當進行main的qmake時,lib目標產生的prl文件和動態庫文件尚未生成。這必然導致main中無法讀取lib產生的prl文件。

    最終的解決辦法,其實很無奈,將project.pro中main和lib的順序反過來,再編譯,一切正常。

本文出自 “elephant_liu” 博客,請務必保留此出處http://elephantliu.blog.51cto.com/1107116/835870

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved