【发布时间】:2013-02-18 14:26:59
【问题描述】:
有没有办法获得包含.pro 的目录的windows 样式路径或将_PRO_FILE_PWD_ 中存储的内容转换为Windows 样式路径?
我对 Qmake 中的 _PRO_FILE_PWD_ 变量有疑问,它在 Windows 上返回 unix 样式路径。
例如 c:/foo/bar 而不是 c:\foo\bar
这证明路径被用作发布链接步骤的一部分时存在问题。
QMAKE_POST_LINK += copy /y $$[QT_INSTALL_BINS]\\QtCore4.dll $${_PRO_FILE_PWD_}/bin/;
我使用 .pro 文件创建了一个 Visual Studio 项目,我可以看到,如果我在 VS 中手动将正斜杠更改为反斜杠,则所有内容都可以正常复制而没有任何错误。
如果我不更正路径,我会在 Visual Studio 中收到以下错误。
PostBuildEvent:
1> Description: copy /y C:\Qt\4.8.3\bin\QtCore4.dll E:/foo/build/win32//bin//;
1> The syntax of the command is incorrect.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: The command "copy /y C:\Qt\4.8.3\bin\QtCore4.dll E:/foo/build/win32/bin/;
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" exited with code 1.
解决方案
非常简单的解决方案,感谢 Roku,通过使用 / 字符在路径周围添加转义双引号。
MAKE_POST_LINK +=
copy /y $$[QT_INSTALL_BINS]\\QtCore4.dll \"$${_PRO_FILE_PWD_}/bin/\";
注意添加多个复制命令,您必须用 & 号分隔它们,分号不起作用。
例如
MAKE_POST_LINK +=
copy /y $$[QT_INSTALL_BINS]\\QtCore4.dll \"$${_PRO_FILE_PWD_}/bin/\" &
MAKE_POST_LINK +=
copy /y $$[QT_INSTALL_BINS]\\QtGui4.dll \"$${_PRO_FILE_PWD_}/bin/\";
【问题讨论】:
-
你确定字符 / 是问题吗?它几乎可以在 Windows 中的任何地方使用。您是否将复制行复制粘贴到命令提示符并在那里尝试过?可以最后一个;是问题吗?
-
@Roku 我刚刚在命令提示符下尝试过。它不适用于 / 仅 \。这 ;是不是因为我有一些复制命令..我试过没有...
标签: windows qt path qmake visual-studio-2010