Ответ 1
Добавьте это в свой файл pro:
target.path = ../testProject/$$TARGET
INSTALLS += target
У меня есть Qt-проект, который создает dll/shared-library и другой Qt-проект, который проверяет библиотеку.
Есть ли хороший способ заставить qmake скопировать dll в выходную папку тестового проекта?
Добавьте это в свой файл pro:
target.path = ../testProject/$$TARGET
INSTALLS += target
# 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
копирует его вовремя.
Я использую INSTALLS, так. (qmake documentation)
Это может быть не "хороший" способ, но это может сделать трюк.
QMAKE_POST_LINK += some shell command to copy the dll
Вы можете использовать ключевое слово DESTDIR
, как сказано в qmake files documetation в Qt 4.
QMAKE_POST_LINK += $$QMAKE_COPY $$quote("yourSrcDir\your.dll") $$quote($$IN_PWD) $$escape_expand(\\n\\t)