2016-01-11 5 views
0

У меня есть этот код в моем QMAKE (.pro) файл:команда Qt QMAKE_POST_LINK получает искаженное

# Make sure all the slashes are in the correct direction for windows 
SOURCE_DIR = $${replace(_PRO_FILE_PWD_, /, \\)}\\resources\\* 
TARGET_DIR = $${replace($$quote(DESTDIR), /, \\)} 
message (copy1 $$SOURCE_DIR $$TARGET_DIR /y) 
QMAKE_POST_LINK += copy $$SOURCE_DIR $$TARGET_DIR /y 

# vvv THIS WORKS, BUT IS COMMENTED OUT vvv 
#message (copy2 C:\\Users\\adadacha\\Desktop\\audioTest\\resources\\* C:\\Users\\adadacha\\Desktop\\build-TGW2AudioTest-Desktop_Qt_5_5_1_MinGW_32bit-Debug\\targetDbg /y) 
#QMAKE_POST_LINK += copy C:\\Users\\adadacha\\Desktop\\audioTest\\resources\\* C:\\Users\\adadacha\\Desktop\\build-TGW2AudioTest-Desktop_Qt_5_5_1_MinGW_32bit-Debug\\targetDbg /y 

Поэтому в основном то, что это пытается достигнуть, скопировать все из/ресурсов/...

следующий результат я получаю. Первая строка - это функция message(), отображающая точно команду, которую я добавляю в QMAKE_POST_LINK (за исключением того, что я называю ее copy1 вместо копии). Затем я вижу, что правильная копия ... строка печатается системой, поэтому я вижу, что она выглядит правильно. Но потом я вижу ошибку, которая показывает, что \resources\* стал \resources* и, кажется, потерял последние \ Я не знаю почему. Я пытался быть DILLIGENT с моим / and \\ ...

Project MESSAGE: copy1 C:\Users\adadacha\Desktop\audioTest\resources\* C:\Users\adadacha\Desktop\build-TGW2AudioTest-Desktop_Qt_5_5_1_MinGW_32bit-Debug\targetRel /y 
    : 
copy C:\Users\adadacha\Desktop\audioTest\resources\* C:\Users\adadacha\Desktop\build-TGW2AudioTest-Desktop_Qt_5_5_1_MinGW_32bit-Debug\targetDbg /y 
Makefile.Debug:167: recipe for target 'targetDbg/TGW2-AudioTest.exe' failed 
process_begin: CreateProcess(NULL, copy C:\Users\adadacha\Desktop\audioTest\resources* C:\Users\adadacha\Desktop\build-TGW2AudioTest-Desktop_Qt_5_5_1_MinGW_32bit-Debug\targetDbg /y, ...) failed. 
make (e=2): The system cannot find the file specified. 

Можно ли предположить, почему это происходит? Обратите внимание, что если я копирую вставку того же выхода (как в моем прокомментированном коде), он работает, и конец не искажается.

+1

Попробуйте использовать простые '/' пути, большинство инструментов Windows справляются с ними правильно. – Mat

+1

Попробуйте использовать '$$ system_path (...)' вместо вашего agly 'replace' – Evgeny

+1

Также используйте' $$ QMAKE_COPY' вместо 'copy' – Evgeny

ответ

3

Попробуйте использовать функцию $$system_path(...) вместо вашего agly replace. Это заботится о ваших системных исправлениях.

Также используйте $$QMAKE_COPY вместо copy. Это независимый от платформы способ копирования файлов с qmake.