qt下的跨目录多工程编译

原地址:http://blog.csdn.net/fjb2080/article/details/7386292

转自:http://blog.csdn.net/high_high/article/details/7385585

这里要编译的工程包含一个库和一个可执行文件。可执行文件依赖于库,所以要先编译库,编译后库放在lib目录里面,可执行文件放在bin目录里面。

目录结构如下:

  1. .  
  2. ├── app  
  3. │   ├── app.pro  
  4. │   ├── appwindow.cpp  
  5. │   ├── appwindow.h  
  6. │   └── main.cpp  
  7. ├── bin  
  8. ├── complex.pro  
  9. ├── include  
  10. │   └── base.h  
  11. ├── lib  
  12. └── src  
  13.     ├── base.cpp  
  14.     └── src.pro  

全局的工程文件complex.pro在工程根目录下,内容如下:
  1. TEMPLATE = subdirs  
  2. SUBDIRS = src app  
  3. CONFIG += ordered  

subdirs模板表示要编译多个子目录中的工程。CONFIG选项要求各个子工程按顺序编译,子目录的编译顺序在SUBDIRS中指明。

库的工程文件在src目录中,名为src.pro, 内容如下:

  1. TARGET = base  
  2. VERSION = 0.1.0  
  3. CONFIG += static  
  4.   
  5. DESTDIR = ../lib  
  6.   
  7. INCLUDEPATH += ../include  
  8. DEPENDPATH += . ../include  
  9.   
  10. SOURCES += base.cpp  
  11. HEADERS += base.h  

TARGET表示编译后的库名字为base,CONFIG += static表示编译后的库是静态库。DESTDIR设置编译后的库的位置。

库编译结束后就是可执行文件编译了,工程文件在app目录下的app.pro,内容如下:

  1. TEMPLATE = app  
  2. TARGET = app  
  3. DESTDIR = ../bin  
  4.   
  5. INCLUDEPATH += . ../include  
  6. DEPENDPATH += .  
  7.   
  8. LIBS += -L../lib -lbase  
  9.   
  10. SOURCES += appwindow.cpp main.cpp  
  11. HEADERS += appwindow.h  

如果要编译多个库,多个可执行文件,或者多级目录工程,可以参照这个例子写多个pro文件,递归而已,不是什么难事。

Reference:

Johan Thelin. Foundations of Qt Development. Apress 2007

原文地址:https://www.cnblogs.com/lanye/p/3533762.html