Відповіді:
Правильний спосіб це зробити так:
LIBS += -L/path/to -lpsapi
Таким чином він буде працювати на всіх платформах, підтримуваних Qt. Ідея полягає в тому, що вам потрібно відокремити каталог від імені бібліотеки (без розширення та без будь-якого префікса "lib"). Звичайно, якщо ви включаєте специфічну для Windows ліб, це насправді не має значення.
У випадку, якщо ви хочете зберегти файли lib в каталозі проектів, ви можете посилатися на них зі $$_PRO_FILE_PWD_
змінною, наприклад:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
qmake -tp vc
, я не знаходжу імен libs у Additional Dependencies
проекті, але проект vs працює добре. Чи означає це, що є ще якісь методи, які потрібно додати Additional Dependencies
до vs?
LIBS += -lGdi32
.
LIBS + = C: \ програмні файли \ OpenCV \ lib
не працюватиме, оскільки ви використовуєте пробіли у файлах програми. У цьому випадку вам слід додати лапки, тому результат буде виглядати приблизно так : LIBS + = "C: \ Program Files \ OpenCV \ lib" . Я рекомендую розміщувати бібліотеки в місцях, що не є пробілами ;-)
WINDIR = $$DIR
,WINDIR ~=s,/,\\,g
Ви маєте на увазі помилку через відсутність додаткового шляху включення. Спробуйте додати його за допомогою: INCLUDEPATH + = C: \ шлях \ до \ включити \ файли \ Сподіваюся, він працює. З повагою
І щоб додати декілька файлів бібліотеки, ви можете написати наступне:
INCLUDEPATH * = E: / DebugLibrary / VTK E: / DebugLibrary / VTK / Common E: / DebugLibrary / VTK / Filtering E: / DebugLibrary / VTK / GenericFiltering E: / DebugLibrary / VTK / Graphics E: / DebugKiblioteka / Qt E: / DebugLibrary / VTK / Hybrid E: / DebugLibrary / VTK / Imaging E: / DebugLibrary / VTK / IO E: / DebugLibrary / VTK / Parallel E: / DebugLibrary / VTK / Rendering E: / DebugLibrary / VTK : / DebugLibrary / VTK / VolumeRendering E: / DebugLibrary / VTK / Widgets E: / DebugLibrary / VTK / Wrapping
ЛІЕС * = -LE: / DebugLibrary / VTKBin / бен / реліз -lvtkCommon -lvtksys -lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib -lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtkexoIIc -lvtkftgl -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering
Якщо ви хочете розгорнути свою програму на машинах клієнтів, а не використовувати свою програму лише самостійно, ми виявимо, що LIBS+= -Lxxx -lyyy
метод може призвести до плутанини, якщо не до проблем.
Ми розробляємо додатки для Linux, Mac та Windows за допомогою Qt. Ми постачаємо комплектні, автономні програми. Отже, всі несистемні бібліотеки повинні бути включені в пакет розгортання. Ми хочемо, щоб наші клієнти мали змогу запускати програму з однієї USB-накопичувачі для всіх ОС. З міркувань сумісності платформи USB-накопичувач повинен бути відформатований як FAT32, який не підтримує (Linux) посилання.
Ми знайшли LIBS+= -Lxxx -lyyy
ідіому занадто багато чорної скриньки:
Ми точно не знаємо, що є файловим шляхом (статичної або динамічної) бібліотеки, яку знайшов лінкер. Це незручно. Наш Mac-лінкер регулярно виявляв, що лійки відрізняються від тих, які ми вважали, що їх слід використовувати. Це траплялося кілька разів з бібліотеками OpenSSL, де лінкер Mac знаходив і використовував власну - старішу, несумісну - версію OpenSSL, а не нашу запитувану версію.
Ми не можемо дозволити собі, що лінкер використовує посилання на бібліотеки, оскільки це порушить пакет розгортання.
З назви бібліотеки ми хочемо зрозуміти, чи зв’язуємо ми статичну або динамічну бібліотеку.
Тож для нашого конкретного випадку ми використовуємо лише абсолютні файлові контури та перевіряємо, чи існують вони. Видаляємо всі посилання.
Спочатку ми з'ясовуємо, яку операційну систему ми використовуємо, і поміщаємо це в змінну CONFIG. І, наприклад, для Linux 64bit, тоді:
linux64 {
LIBSSL= $$OPENSSLPATH/linux64/lib/libssl.a
!exists($$LIBSSL): error ("Not existing $$LIBSSL")
LIBS+= $$LIBSSL
LIBCRYPTO= $$OPENSSLPATH/linux64/lib/libcrypto.a
!exists($$LIBCRYPTO): error ("Not existing $$LIBCRYPTO")
LIBS+= $$LIBCRYPTO
}
Всі залежності можна скопіювати в пакет розгортання, оскільки ми знаємо їх файлові шляхи.
Я хотів би додати заради повноти, що ви також можете додати просто БІБЛІОТЕЧНИЙ ПАРТ, де вона буде шукати залежну бібліотеку (яка може не бути безпосередньо посилається у вашому коді, але бібліотека, яку ви використовуєте, може знадобитися).
Для порівняння, це відповідало б тому, що робить середовище LIBPATH, однак його вид незрозумілий у Qt Creator і недостатньо задокументований.
Спосіб, яким я обійшов це, наступний:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
Якщо ви не вказали фактичне ім’я бібліотеки, воно додає шлях до того, де він буде шукати залежні бібліотеки. Різниця в синтаксисі невелика, але це дуже корисно для надання лише PATH, де шукати залежні бібліотеки. Іноді це просто біль поставити кожній контуру окрему бібліотеку, де ви знаєте, що вони знаходяться у певній папці, і Qt Creator підбере їх.