Qt QMAKE_POST_LINK命令被破坏

时间:2016-01-11 13:37:30

标签: c++ qt 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)。 然后我看到正确的复制...行被系统打印,所以我看到它看起来是正确的。但后来我发现一个错误,表明\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.

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

1 个答案:

答案 0 :(得分:3)

尝试使用$$system_path(...)函数代替您的replace。这会照顾您的系统路径。

同时使用$$QMAKE_COPY代替copy。这是以平台独立方式复制文件qmake