cmake RUNTIME_OUTPUT_DIRECTORY Windows
-
23-08-2019 - |
解決
私は長年、 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)
このプロジェクトは、そのプロジェクトの設定に応じて、これは、デバッグまたはリリースフォルダになりますかのいずれかに構築されている場所へのパスになります。