24

クロスプラットフォーム ビルドの管理にを使用していますが、この問題以外はすべて解決しています。データファイルが保存されているディレクトリに設定RUNTIME_OUTPUT_DIRECTORYしました。bin/Linux では、これで問題なく動作します。Windows では、実行可能ファイルはビルド タイプに応じてDebug/サブディレクトリに配置されます。Releaseで実行可能ファイルを適切なディレクトリにコピーする方法、または(さらに良い)これらのサブディレクトリの使用を完全に停止する方法はありますか?

4

7 に答える 7

11

これらのディレクトリが意図的なものなのかバグなのかはわかりませんが、前方非互換性のリスクがあるため、次を追加できます。

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()

これは私のために働いています

于 2009-06-16T06:20:18.280 に答える
2

このトピックに関するいくつかの良い議論を見つけました。

http://www.cmake.org/pipermail/cmake/2008-April/021355.html

http://www.vtk.org/Bug/bug_view_advanced_pa​​ge.php?bug_id=8366

RUNTIME_OUTPUT_DIRECTORYの代わりに非推奨のEXECUTABLE_OUTPUT_PATHを使用することは可能でしょうか? 2 の間でどのような機能が変更されたのかはわかりませんが、試してみる価値があるかもしれません。

于 2009-02-17T18:36:46.823 に答える
1

一部の 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を同じものに設定するとうまくいくかもしれません。

于 2009-02-22T17:15:18.867 に答える
1

これまでのところ、私が見つけた最良の答えは、ターゲット ファイルとデータ ファイルごとにCMake インストール コマンドを記述し、インストール ディレクトリから実行するように MSVC デバッガーをセットアップすることです。これには、インストーラーの作成に CPack を使用するという追加の利点があります。

于 2009-09-21T17:00:09.963 に答える
1

私にとってグローバル:

set(CMAKE_STATIC_LIBRARY_PREFIX "../lib")
set(CMAKE_SHARED_LIBRARY_PREFIX "../lib")

作業を行ったので、ライブラリごとに設定する必要はありません (CMake 2.8.4)

于 2011-09-09T16:28:00.920 に答える
-5

Visual Studio プロジェクトのビルド場所を変更する必要があります。[プロジェクト プロパティ] に移動し、[コンパイル] タブで、[ビルド出力パス] を任意の場所に指定します。

ノート

私はCMakeについて知らないので、これがどれほど関連性があるかわかりません。

Visual Studio ビルド イベントで次のトークンを使用できます。

$(TargetPath)

これは、プロジェクトがビルドされる場所へのパスになるため、プロジェクトの設定に応じて、これは Debug または Release フォルダーになります。

于 2009-02-20T14:01:14.620 に答える