[解決済み] CMakeを使ってDLLファイルを実行ファイルと同じフォルダーにコピーする方法は?
2022-05-17 05:54:45
質問
私たちは SVN でソースの Visual Studio ファイルを生成するために CMake を使用しています。現在、私のツールは、いくつかの DLL ファイルが実行ファイルと同じフォルダーにあることを必要とします。DLL ファイルは、ソースと一緒にフォルダーにあります。
どのようにしたら、私の
CMakeLists.txt
を変更して、生成された Visual Studio プロジェクトが release/debug フォルダーに特定の DLL ファイルをすでに持っているか、コンパイル時にそれらをコピーするようにするにはどうしたらよいでしょうか。
どのように解決するのですか?
私なら
add_custom_command
と共に、これを実現するために
cmake -E copy_if_different...
. 詳細については
cmake --help-command add_custom_command
cmake -E
つまり、あなたの場合、以下のようなディレクトリ構造であれば
/CMakeLists.txt
/src
/libs/test.dll
で、このコマンドが適用されるCMakeのターゲットは
MyTest
である場合、CMakeLists.txtに以下を追加することができます。
add_custom_command(TARGET MyTest POST_BUILD # Adds a post-build event to MyTest
COMMAND ${CMAKE_COMMAND} -E copy_if_different # which executes "cmake - E copy_if_different..."
"${PROJECT_SOURCE_DIR}/libs/test.dll" # <--this is in-file
$<TARGET_FILE_DIR:MyTest>) # <--this is out-file path
の内容全体が欲しいだけなら
/libs/
ディレクトリの内容全体をコピーしたい場合は
cmake -E copy_directory
:
add_custom_command(TARGET MyTest POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${PROJECT_SOURCE_DIR}/libs"
$<TARGET_FILE_DIR:MyTest>)
もし、構成 (リリース、デバッグなど) に応じて異なる dll をコピーする必要がある場合、対応する構成と同じ名前のサブディレクトリにこれらを置くことができます。
/libs/Release
そして
/libs/Debug
. 次に、コンフィギュレーションタイプを
add_custom_command
の呼び出しの中で、DLLへのパスに設定タイプを注入する必要があります。
add_custom_command(TARGET MyTest POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${PROJECT_SOURCE_DIR}/libs/$<CONFIGURATION>"
$<TARGET_FILE_DIR:MyTest>)
関連
-
[解決済み】クラスが登録されていないエラー
-
[解決済み] using Interop.SHDocVw.dll この名前空間/DLLはどこにありますか?
-
[解決済み] c# dllの暗号化
-
WindowsのDLLプログラミングにおけるインポートとエクスポート。declspec(dllimport) , __declspec(dllexport) , および
-
[解決済み] DLLとLIBファイル - 何が、なぜ?
-
[解決済み] ActiveXコンポーネントがオブジェクトを作成できない
-
[解決済み] 圧縮(zip)フォルダにファイル/フォルダを送信しようとすると何も起こらない
-
[解決済み】64ビットWindowsで64ビットDLLはSystem32に、32ビットDLLはSysWoW64に入るのはなぜですか?
-
[解決済み】CMakeは具体的にどのように動作するのですか?
-
[解決済み] CMakeを使ってDLLファイルを実行ファイルと同じフォルダーにコピーする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】クラスが登録されていないエラー
-
[解決済み] using Interop.SHDocVw.dll この名前空間/DLLはどこにありますか?
-
[解決済み] c# dllの暗号化
-
WindowsのDLLプログラミングにおけるインポートとエクスポート。declspec(dllimport) , __declspec(dllexport) , および
-
[解決済み] DLLとLIBファイル - 何が、なぜ?
-
[解決済み] ActiveXコンポーネントがオブジェクトを作成できない
-
[解決済み] 圧縮(zip)フォルダにファイル/フォルダを送信しようとすると何も起こらない
-
[解決済み】64ビットWindowsで64ビットDLLはSystem32に、32ビットDLLはSysWoW64に入るのはなぜですか?
-
[解決済み] CMakeを使ってDLLファイルを実行ファイルと同じフォルダーにコピーする方法は?