Qt QMAKE_POST_LINK 命令被破坏

Qt QMAKE_POST_LINK command getting mangled

我的 qmake (.pro) 文件中有这段代码:

# 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

所以基本上这试图实现的是从/resources/复制所有内容...

以下是我得到的输出。第一行是一个 message() 函数,准确显示我添加到 QMAKE_POST_LINK 的命令(除了我称它为 copy1 而不是 copy)。 然后我看到系统打印了正确的 copy... 行,所以我可以看到它看起来是正确的。但是后来我看到一个错误,显示 \resources\* 已经变成 \resources* 并且似乎已经丢失了最后一个 \ 我不知道为什么。我努力勤奋地对待我的 / 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.

谁能说明为什么会这样?请注意,如果我复制粘贴相同的输出(如在我注释掉的代码中),它会起作用并且结尾不会损坏。

尝试使用 $$system_path(...) 功能而不是你的敏捷 replace。这会关心您的系统路径。

也使用 $$QMAKE_COPY 而不是 copy。这是平台独立的方式复制文件 qmake.