我正在使用额外的目标qmake,我正在尝试同时做两件事:创建一个新文件夹,然后将一个dll复制到该文件夹中.两个动作分开工作正常,但两者合在一起不起作用.
something.target = this
# This works:
# something.commands = mkdir newFolder
# This works too (if newFolder exists)
# something.commands = copy /Y someFolder\\file.dll newFolder
# This doesn't work:
something.commands = mkdir newFolder; \
copy /Y someFolder\\file.dll newFolder
QMAKE_EXTRA_TARGETS += something
PRE_TARGETDEPS += this
Run Code Online (Sandbox Code Playgroud)
我认为这是正确的语法(我在这里和这里找到类似的例子),但是我收到以下错误:
> mkdir newFolder; copy /Y someFolder\\file.dll newFolder
> The syntax of the command is incorrect.
Run Code Online (Sandbox Code Playgroud)
不同平台上的语法是否有所不同?我正在使用Qt 5.0.1开发Windows 7.
Ser*_*kov 22
.commands变量的值通过qmake按原样粘贴到Makefile中的目标命令位置.qmake从值中删除任何空格并将它们更改为单个空格,因此如果没有特殊工具,则无法创建多行值.还有工具:function escape_expand.试试这个:
something.commands = mkdir newFolder $$escape_expand(\n\t) copy /Y someFolder\\file.dll newFolder
Run Code Online (Sandbox Code Playgroud)
$$escape_expand(\n\t) 添加新行字符(结束上一个命令)并使用制表文件语法指示的制表符开始下一个命令.
and 运算符在 Linux 上也适用于我,奇怪的是 Windows。
something.commands = mkdir newFolder && copy /Y someFolder\\file.dll newFolder
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7113 次 |
| 最近记录: |