2009-10-08 27 views
31

Tôi đang viết một bộ ứng dụng qt nhỏ bao gồm một tập hợp các chương trình nhỏ hoạt động trên cùng một tập hợp các tệp. Họ được tổ chức như thế này:Làm cách nào để sử dụng qmake để xây dựng nhiều tệp nhị phân trong một dự án?

/ 
    app1/ 
    main.cpp 
    app2/ 
    main.cpp 
    app3/ 
    main.cpp 
    common/ 
    project.h 
    project.cpp 
    somemore.h 
    somemore.cpp 
    appsuite.pro 

Khi tôi qmake && make, tôi muốn những chương trình sau đây sẽ được xây dựng:

  • app1/app1
  • app2/app2
  • App3/App3

Làm cách nào để viết appsuite.pro để hoạt động như thế này?
Tôi đã nghe một số thông tin về các tệp .pri nhưng tôi không thể tìm ra cách sử dụng chúng trong "tình huống" của mình.

Trợ giúp đánh giá cao,
jrh

Trả lời

30

Một cách để làm việc đó là phải có một tập tin .pro mỗi thư mục con.

appsuite.pro:

TEMPLATE = subdirs 
SUBDIRS = common app1 app2 app3 
app1.depends = common 
app2.depends = common 
app3.depends = common 

app1/app1.pro:

TARGET = app1 
SOURCES = main.cpp 
INCLUDEPATH += ../common 
LIBS += -L../common -lcommon 

File common.pro nên xây dựng một thư viện tĩnh sau đó bạn có thể liên kết vào mã nhị phân.

common/common.pro:

TEMPLATE = lib 
CONFIG = staticlib 
SOURCES = project.cpp more.cpp 
HEADERS = project.h more.h 
+1

Tệp .pri chỉ chứa các lệnh qmake khác. Chắc chắn họ thường liệt kê các tập tin để đưa vào một dự án, nhưng nó không nhất thiết phải như vậy. Ví dụ, tại nơi làm việc, chúng tôi có một định nghĩa mục tiêu để chúng tôi có thể thực hiện "làm cho phụ thuộc" và có các tệp makefiles được tạo lại. –

+2

+1 để chỉ ra rằng 'common' phải là' lib'. Cảm ơn! – jrharshath

+0

@cjhuitt .pri tệp không thực sự có liên quan trong trường hợp này nên tôi đã xóa tham chiếu. – PiedPiper

9

Một cách là tạo ra dự án toàn cầu của bạn appsuite.pro, như thế này:

TEMPLATE = subdirs 
SUBDIRS = app1 app2 app3 

Các tiểu dự án app1.proapp2.pro cũng nên được tạo ra cho mình những ứng dụng , với sự phụ thuộc liên quan đến thư mục/thư mục con chung

Bạn cũng có thể chỉ định người phụ thuộc khác es trong appsuite.pro, ví dụ: nếu app1 phụ thuộc vào app2, như:

app1.depends = app2 
Các vấn đề liên quan