質問

を使用してい 管理マクロスプラットフォームを構築していま手を除き、この問題です。設定します RUNTIME_OUTPUT_DIRECTORYbin/ ディレクトリにしたいことが分かったデータファイルに格納されています。Linuxの場合、この作品です。Windowsの実行可能ファイルを取得し、 Debug/Release ディレクトリのサブディレクトリによって構築。はありません コピーの実行に適切なディレクトリ、または(も)使用を中止しこれらのサブディレクトリ。

役に立ちましたか?

解決

私は長年、 Ogapoするによって報告された微prefixプロパティのハックを使用してきました。それは動作します。

しかし、CMakeのバージョン2.8のように、Windows上でリリース/デバッグサブディレクトリを避けるための公式サポートがあります。

のようなので、グローバルCMAKE_<ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION>変数、またはターゲットごとの<ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION>のプロパティのいずれかを使用します:

SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")

他のヒント

私は、これらのディレクトリは、故意またはバグあるかどうかわからないけど、前方の非互換性の危険にさらされて、あなたは追加することができます:

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

ることは可能な利用を推奨されていません EXECUTABLE_OUTPUT_PATH の代わりに RUNTIME_OUTPUT_DIRECTORY?お使いいただくことによって機能を変更間は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. 

私は確認していませんこれらのVARSは存在するが、多分うまくいくかもしれないと同じことにRUNTIME_OUTPUT_DIRECTORY_DEBUG && RUNTIME_OUTPUT_DIRECTORY_RELEASEを設定します。

私にとってはグローバルます:

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

仕事をしたので、私は、各図書館(CMakeの2.8.4)のためにそれを設定する必要はありません。

あなたはVisual Studioのプロジェクトのビルドの場所を変更する必要があります。プロジェクトのプロパティに移動し、[コンパイル]タブ上で、あなたが好きなところであることを「出力パスを構築する」を指定します。

の注意

私はCMakeのことは知らないとして、これはどのように関連するか分からないのです。

あなたがイベントを構築するのVisual Studioで、次のトークンを使用することができます:

$(TargetPath)

このプロジェクトは、そのプロジェクトの設定に応じて、これは、デバッグまたはリリースフォルダになりますかのいずれかに構築されている場所へのパスになります。

scroll top