2017-04-12 1 views
0

実行時に使用する外部DLLファイルを現在のプロジェクトの.exe出力場所に移動することに関するその他の記事を見てきましたが、奇妙な問題が発生して情報が見つからないようです。CMake複数のDLLをコピーできません

私は私のプロジェクトのための私の出力ディレクトリに私のlibfreenect2 DLLをコピーするには、次のカスタムコマンドを使用しています:

add_custom_command(TARGET kinect_feeds POST_BUILD 
    COMMAND ${CMAKE_COMMAND} -E copy_if_different 
     "libfreenect2_output_path/bin/*.dll" 
     $<TARGET_FILE_DIR:kinect_feeds>) 

はcmakeのは、うまく私のプロジェクトを設定しますが、私は、Visual Studioでコマンドを実行するために行くときファイルをコピーしようとするとエラーになります。私は問題がワイルドカード文字であると思う。 Visual Studioのエラー出力を使って完全なコマンドをgit bashウィンドウにコピーし、期待どおりに動作します。これらは明示的にそうように定義されている場合も、Visual Studioは、複数のファイルを移動する問題がない:

add_custom_command(TARGET kinect_feeds POST_BUILD 
    COMMAND ${CMAKE_COMMAND} -E copy_if_different 
     "libfreenect2_output_path/bin/freenect2.dll" 
     "libfreenect2_output_path/bin/glfw3.dll" 
     $<TARGET_FILE_DIR:kinect_feeds>) 

私の質問は、Visual Studioによって実行されるとき、コマンドや、私が行方不明です何かがあるワイルドカード文字は、CMakeのでは動作しない、あります?今のところ私はすべてのDLLファイルを明示的に打ち込むだけですが、これを避けることを望んでいました。

私はCMakeとVisual Studio 2015 Community Editionの最新バージョンを使用しています。

+0

この場合のワイルドカード引用は、「シェル」に依存します。私はVSを使用して以来、長い時間がかかりましたが、二重引用符ではなく、ワイルドカードの周りに単一引用符が使用されている可能性があります。 – nega

+0

私はシングルクォートを試しましたが、それでもコマンドが好きではありませんでした。私はVSがワイルドカードとして受け入れるかもしれないものを調べます。私はエスケープ文字で賢明にならなければならないかもしれないと思っています。 – Wired365

答えて

0

私は私がより

だけでなく、コマンドラインからエラーが出るので、Visual Studioが、しかしどんな影響を与えているとは思わないCMakeの3.6.1と同じ問題とVisual Studio 2012に実行していますよCMDプロンプト:

> cmake -E copy .\data\*.bin \temp 
Error copying file ".\data\*.bin" to "\temp". 

このquestion参照CMake bug report regarding wildcards、それはCMakeの3.5で修正されるはずだったが、CMakeの3.6.1を使用してWindows上で動作するようには表示されません。

各ファイルを個別に一覧表示するソリューションは、現在の解決策だと思います。

関連する問題