クロスプラットフォーム ビルドの管理にcmakeを使用していますが、この問題以外はすべて解決しています。データファイルが保存されているディレクトリに設定RUNTIME_OUTPUT_DIRECTORY
しました。bin/
Linux では、これで問題なく動作します。Windows では、実行可能ファイルはビルド タイプに応じてDebug
/サブディレクトリに配置されます。cmakeRelease
で実行可能ファイルを適切なディレクトリにコピーする方法、または(さらに良い)これらのサブディレクトリの使用を完全に停止する方法はありますか?
7 に答える
これらのディレクトリが意図的なものなのかバグなのかはわかりませんが、前方非互換性のリスクがあるため、次を追加できます。
if (MSVC_IDE)
# hack to get around the "Debug" and "Release" directories cmake tries to add on Windows
set_target_properties (${NAME} PROPERTIES PREFIX "../")
endif()
これは私のために働いています
このトピックに関するいくつかの良い議論を見つけました。
http://www.cmake.org/pipermail/cmake/2008-April/021355.html
http://www.vtk.org/Bug/bug_view_advanced_page.php?bug_id=8366
RUNTIME_OUTPUT_DIRECTORYの代わりに非推奨のEXECUTABLE_OUTPUT_PATHを使用することは可能でしょうか? 2 の間でどのような機能が変更されたのかはわかりませんが、試してみる価値があるかもしれません。
一部の cmake 変数には、ビルド固有のバージョンがあります。
CMAKE_C_FLAGS
the compiler flags for compiling C sources. Note you can also specify switches with ADD_DEFINITIONS().
CMAKE_C_FLAGS_DEBUG
compiler flags for compiling a debug build from C sources.
CMAKE_C_FLAGS_RELEASE
compiler flags for compiling a release build from C sources.
CMAKE_C_FLAGS_RELWITHDEBINFO
compiler flags for compiling a release build with debug flags from C sources.
これらの変数が存在することは確認していませんが、RUNTIME_OUTPUT_DIRECTORY_DEBUG
&&RUNTIME_OUTPUT_DIRECTORY_RELEASE
を同じものに設定するとうまくいくかもしれません。
これまでのところ、私が見つけた最良の答えは、ターゲット ファイルとデータ ファイルごとにCMake インストール コマンドを記述し、インストール ディレクトリから実行するように MSVC デバッガーをセットアップすることです。これには、インストーラーの作成に CPack を使用するという追加の利点があります。
私にとってグローバル:
set(CMAKE_STATIC_LIBRARY_PREFIX "../lib")
set(CMAKE_SHARED_LIBRARY_PREFIX "../lib")
作業を行ったので、ライブラリごとに設定する必要はありません (CMake 2.8.4)
Visual Studio プロジェクトのビルド場所を変更する必要があります。[プロジェクト プロパティ] に移動し、[コンパイル] タブで、[ビルド出力パス] を任意の場所に指定します。
ノート
私はCMakeについて知らないので、これがどれほど関連性があるかわかりません。
Visual Studio ビルド イベントで次のトークンを使用できます。
$(TargetPath)
これは、プロジェクトがビルドされる場所へのパスになるため、プロジェクトの設定に応じて、これは Debug または Release フォルダーになります。