Cả hai CONFIG += ordered
và target.depends =
không được hỗ trợ bởi chương trình phụ trợ MSVC của qmake (trình tạo giải pháp). Trở lại năm 2010 với Qt 4.7 xung quanh, các tài liệu không đề cập đến điều đó, nhưng trong Qt 4.8 các nhà phát triển đã cập nhật các tài liệu accordingly (xem những nhận xét phần Target):
- .depends tiểu dự án này phụ thuộc vào quy định tiểu dự án. Chỉ khả dụng trên nền tảng sử dụng makefiles.
- Các ra lệnh tùy chọn không được hỗ trợ cho Visual Studio.
Nhưng họ đã cung cấp giải pháp thay thế (được thảo luận trong đó cryptic post) và nó vẫn hợp lệ và thậm chí được ghi lại trong cùng một phần target. Thật tệ, tôi đã phải xây dựng lại qmake và sử dụng một trình gỡ lỗi để xác minh rằng:
a) Có một dự án Lib/DLL trong đó TARGET (các lib được sử dụng và không phải là .dll) được sử dụng trên dòng liên kết của một dự án khác trong giải pháp của bạn (bạn có thể sửa đổi đường liên kết bằng LIBS).
b) Có dự án Exe trong đó TARGET được sử dụng trong bước xây dựng tùy chỉnh của một dự án khác trong giải pháp của bạn.
- Bạn không sử dụng đường dẫn trong biến TARGET (sử dụng DESTDIR/DLLDESTDIR cho điều đó), ví dụ: TARGET = $ (SOME_VARIABLE)/myLib, sẽ không hoạt động.
- Nếu bạn có vị trí đặc biệt cho libs của mình, bạn chỉ định đường dẫn -Lmy/library/path và LIBS + = mylib, thay vì chỉ sử dụng LIBS + = my/library/path/mylib
- Các dự án lá được tạo trước khi bạn tạo tệp giải pháp. (Bạn có thể sử dụng lá cờ đệ quy cho qmake để làm điều này, như "qmake -tp vc -r [yourproject.pro]"
Về cơ bản, qmake sẽ tạo ra sự phụ thuộc khi tên mục tiêu của lib của bạn (yourlib.lib
) là tương đương với một trong những thư viện nhập khẩu của các ứng dụng chính thức (có LIBS += yourlib.lib
). (Xem qmake's source nơi thư viện import được thêm vào như phụ thuộc, và một little further nơi họ đang so với những cái tên mục tiêu dự án)
đây là thiết lập tối thiểu tạo phụ thuộc trong giải pháp:
solution.pro
TEMPLATE = vcsubdirs
SUBDIRS = main app
app/app.pro
LIBS += main.lib
main/main.pro
TARGET = main
TEMPLATE = vclib
Với những, nếu bạn chạy qmake -r -tp vc
, bạn sẽ nhận được sự phụ thuộc rõ ràng trong sln tạo:
GlobalSection(ProjectDependencies) = postSolution
{E634D0EB-B004-3246-AADA-E383A376158F}.0 = {1BD6E999-63E6-36F5-99EE-1A650332198C}
EndGlobalSection
Nguồn
2013-03-14 10:28:03
Tôi đã qua tất cả các bộ tài liệu tôi có thể tìm thấy. Và thực hiện rất nhiều nguồn lặn để khởi động. Như một lưu ý phụ, các makefiles qmake tạo ra dường như có các phụ thuộc chính xác. Đó là .sln có vấn đề. –
@Michael: bạn có nghĩa là các tệp .vcproj riêng lẻ (vì tôi tin rằng đó là nơi những người phụ thuộc đó sống). –
Tôi có thể đoán công cụ này đã tồn tại trong tệp .sln, vì đó là tệp biết về tất cả các dự án khác nhau và có thể kết nối chúng với các phụ thuộc mà tôi cần. –