8

Windowsスタイルのパスを含むディレクトリへのWindowsスタイルのパスを取得.proするか、格納されているものをWindowsスタイルのパスに変換する方法はあり_PRO_FILE_PWD_ますか?


_PRO_FILE_PWD_Windows で UNIX スタイルのパスを返す Qmakeの変数に問題があります。

たとえば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/\";  
4

3 に答える 3

14

$$shell_path()スラッシュをローカル システム形式に変換するため、次のようになります。

QMAKE_POST_LINK += copy /y "$$shell_path($$QT_INSTALL_BINS/QtCore4.dll)" "$$shell_path($$_PROD_FILE_PWD_/bin)"
于 2013-08-30T02:01:48.873 に答える
2

/ 文字を使用してパスの周りにエスケープされた二重引用符を追加することで、これを機能させました。

QMAKE_POST_LINK += 
    copy /y $$[QT_INSTALL_BINS]\\QtCore4.dll \"$${_PRO_FILE_PWD_}/bin/\";
于 2013-02-18T18:07:43.357 に答える