2009-04-23 32 views
9

Có một tập tin SomeLib.pro có chứa:Làm cách nào để chỉ định phụ thuộc vào tệp thư viện cho qmake trong Qt?

CONFIG += debug 
TEMPLATE = lib 
TARGET = SomeLib 
.. 

Sau đó, trong một SomeApp.pro phụ thuộc:

.. 
debug:LIBS += -lSomeLib_debug 
.. 

Làm thế nào tôi có thể buộc SomeApp để xây dựng nếu tôi chạm vào SomeLib trong qmake?

+1

Tôi đang tận dụng các QtCreator . Vì vậy, tôi đã hy vọng cho một giải pháp trong một tập tin .pro. –

Trả lời

15

Nó xấu xí vì bạn cần phải cung cấp tên tập tin thư viện chính xác, nhưng điều này sẽ làm việc:

TARGETDEPS + = libfoo.a

+0

Tuyệt vời! Đúng thứ tôi cần! –

+1

Thay vào đó hãy sử dụng PRE_TARGETDEPS. –

+0

tại sao? có vấn đề gì với TARGETDEPS? – paulm

0

chắc chắn không thể thực hiện được, bạn đang nói về việc sử dụng qmake để thực hiện tra cứu phụ thuộc ngược? Vì vậy, những gì bạn muốn là cho nó để xây dựng ứng dụng B (và bất kỳ ứng dụng khác phụ thuộc vào thư viện A) sau khi bạn đã thực hiện một thay đổi cho thư viện A?

đó là một chút giống như nói biên dịch lại tất cả các ứng dụng cơ bản trực quan nếu vbrun300.dll được cập nhật?

1

qmake không cung cấp khả năng này.

Thay vào đó, hãy đặt ứng dụng và lib của bạn trong thư mục con, sau đó tạo ra một Makefile trong thư mục cha của họ trông giống như thế này:

all: FRC 
    cd Somelib && qmake && $(MAKE) 
    cd SomeApp && qmake && $(MAKE) 

FRC: 

Sau đó luôn luôn chạy make từ thư mục này.

+1

Tôi đang sử dụng qtcreator. Vì vậy, tôi đã hy vọng cho một giải pháp trong một tập tin .pro. –

2

Trong trả lời bình luận Zahir, nó là có lẽ giá trị chỉ ra rằng tuyên bố này phụ thuộc vào các tệp qmake là không cần thiết nếu sử dụng các tệp DLL, nhưng là cần thiết nếu exe của bạn phụ thuộc vào một thư viện tĩnh.

1

tôi đã sử dụng:

POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a 

Nó hoạt động, nhưng là vụng về vì nó là cần thiết chỉ định đường dẫn đầy đủ đến thư viện, đó là khác nhau cho mỗi hệ điều hành/biên dịch.

Các vấn đề liên quan