我在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)。
然后我看到正确的复制...行被系统打印,所以我看到它看起来是正确的。但后来我发现一个错误,表明\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.
有谁能说明为什么会这样?请注意,如果我复制粘贴相同的输出(如我注释掉的代码中)它可以工作,并且结尾不会被破坏。
答案 0 :(得分:3)
尝试使用$$system_path(...)
函数代替您的replace
。这会照顾您的系统路径。
同时使用$$QMAKE_COPY
代替copy
。这是以平台独立方式复制文件qmake
。