Qmake: Как скопировать .dll/.so в выходной каталог?

У меня есть Qt-проект, который создает dll/shared-library и другой Qt-проект, который проверяет библиотеку.

Есть ли хороший способ заставить qmake скопировать dll в выходную папку тестового проекта?

Ответ 1

Добавьте это в свой файл pro:

target.path = ../testProject/$$TARGET
INSTALLS += target 

Ответ 2

# Copy the dynamic library.
win32 {
   QMAKE_PRE_LINK=copy /Y lib\qextserialport\src\build\qextserialportd.dll debug\ & copy /Y lib\qextserialport\src\build\qextserialport.dll release\
}
else {
   # TODO: Unices
}

Это работает для библиотеки QextSerialPort. Поддерживает режим Qt debug_and_release.

QMAKE_POST_LINK также работает, но выдает ошибку, если вы пытаетесь запустить приложение сразу: тогда ваш .dll будет скопирован слишком поздно. QMAKE_PRE_LINK копирует его вовремя.

Ответ 3

Я использую INSTALLS, так. (qmake documentation)

Ответ 4

Это может быть не "хороший" способ, но это может сделать трюк.

QMAKE_POST_LINK += some shell command to copy the dll

Ответ 5

Вы можете использовать ключевое слово DESTDIR, как сказано в qmake files documetation в Qt 4.

Ответ 6

QMAKE_POST_LINK += $$QMAKE_COPY $$quote("yourSrcDir\your.dll") $$quote($$IN_PWD) $$escape_expand(\\n\\t)