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
.
我的 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
.