qt下的跨目录多工程编译

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

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

目录结构如下:

[plain] view plaincopy

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

全局的工程文件complex.pro在工程根目录下,内容如下:

[plain] view plaincopy

  1. TEMPLATE = subdirs 
  2. SUBDIRS = src app 
  3. CONFIG += ordered 

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

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

[plain] view plaincopy

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

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

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

[plain] view plaincopy

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

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

Reference:

Johan Thelin. Foundations of Qt Development. Apress 2007

posted on 2012-04-25 19:04  katago  阅读(452)  评论(0编辑  收藏  举报