2012-01-30 23 views
2

ソースツリーのディレクトリからリンクされたアプリケーションのディレクトリにデータファイルをコピーしたいので、実行時にはWindowsのみで利用できます。 DOSのコピーコマンド(Including resource files in Qt Creator build directory)を発行するためにpostターゲットの依存関係を使用するか、インストール手順(Copy a file to the build directory after compiling project with Qt)を使用しますが、どちらかの方法で作業することはできません。Qt Creatorの宛先ディレクトリにファイルをコピー

前者は、ソースパスとデスティネーションパスを生成するためにqmakeパス変数を使用する必要がありますが、DOSコピーコマンドで処理できないバックスラッシュパス区切り文字が含まれています。

インストールソリューションを使用すると、私のプロジェクトの他のユーザーがQt Creatorでポストビルドのステップを設定してから(実際には設定ごとに1つ)、プロジェクトを作成したいので、これを避けたいQt Creatorのデフォルトインストールで動作します。

プロジェクトの.proファイルで完全に定義できる、明らかに単純なタスクを実行する方法はありますか?たとえば、プラットフォーム固有の方法でqmakeパス変数を拡張する方法はありますか?

+0

私は外部のバッチファイルを呼び出し、そこでは、セパレータの置換を行うことで、これを解決してきました set destDir =%2 set destDir =%destDir:/ = \% コピー/ Y%srcFile%%destDir% ' – pineweasel

答えて

1

実行可能ファイルが実際にリンクされた後にのみこれらのコマンドが実行されますが、このソリューションでは外部バッチファイルは必要ありません。注:このWindowsのみのソリューション:当社の.priファイルから

:これはすべてコピーの.dll MYLIBS/x64の中のファイルやMYLIBS/Win32のようにMakefileのコマンドを配置

win32 { 
... 
# Copy the appropriate dll files into the target destination directory. 

QMAKE_TBB_LIBDIR = $$quote($$PWD/MySource/MyLibs/$${PLATFORM_NAME}/vc9) 

QMAKE_POST_LINK = copy /y $${replace(QMAKE_TBB_LIBDIR, /, \\)}\\*.dll > $${replace($$quote(DESTDIR), /, \\)} 
... 
} 

宛先ディレクトリ。

ただし、実行可能ファイルをリンクする必要がない場合、.dllはコピーされません。 ポストビルドバッチファイルにはこの制限はありません。 SRCFILE =%1 セットSRCFILE =%SRCFILE 2 セットをDIR%に `エコーコピーファイル%1::/ = \%

関連する問題