Các Qt 5 CMake manual bang rằng qt5_use_modules
vĩ mô bị phản đối:Điều gì sẽ sử dụng thay vì `qt5_use_modules`?
Macro này là lỗi thời. Sử dụng target_link_libraries với mục tiêu IMPORTED để thay thế.
... Nhưng qt5_use_modules
không chỉ đơn giản là chỉ định thư viện liên kết: nó chỉ định thư mục, cờ biên dịch cần thiết và hơn thế nữa (xem mô tả đầy đủ trong tài liệu được liên kết ở trên).
Giả sử, sau đó, rằng biến QTMODULES
chứa một số danh sách các module Qt nên được sử dụng cho một dự án, các "đề nghị" cách để thay thế sau "phản đối" đường CMake là gì?
qt5_use_modules(${myProjectName} ${QTMODULES})
Sau đây KHÔNG làm việc, chủ yếu là bởi vì nó không thêm bất kỳ Qt bao gồm đường dẫn:
target_link_libraries(${myProjectName} IMPORTED ${QTMODULES})
Liệu các QTMODULES
biến cần phải được tự lặp kết thúc, do đó include_directories
có thể được gọi cho mỗi tên mô-đun riêng lẻ? Điều này có vẻ giống như một bước lùi lớn từ qt5_use_modules
, đơn giản và "chỉ hoạt động". Tui bỏ lỡ điều gì vậy?
Điều đó dường như vẫn yêu cầu tách từng tên ra khỏi biến chứa danh sách các mô-đun mà tôi muốn sử dụng và gắn 'Qt5 ::' vào mỗi biến. Có lý do cụ thể nào tại sao điều này là thích hợp hơn khi chỉ sử dụng 'qt5_use_modules'? –
Đó là * thú vị, tuy nhiên, bạn có thể nhận 'target_link_libraries' để thêm đường dẫn bao gồm, v.v. –
Tùy thuộc vào định dạng của danh sách, bạn có thể thực hiện một số regex trên danh sách đó hoặc lặp qua danh sách để xây dựng một biến mới ở định dạng phù hợp ... – Zrax