あなたが疑ったように、それはかなり簡単です。outdir パスを変更するにはARCHIVE_OUTPUT_DIRECTORY
、 、LIBRARY_OUTPUT_DIRECTORY
、およびtarget プロパティを確認する必要があります。RUNTIME_OUTPUT_DIRECTORY
これらにはすべて構成固有のバリアントもあり (例: )、先頭ARCHIVE_OUTPUT_DIRECTORY_DEBUG
に を付けた同じ名前のグローバル CMake 変数によってすべて初期化できます。CMAKE_
だから、あなたは例えばすることができます
set_target_properties(MyExe PROPERTIES RUNTIME_OUTPUT_DIRECTORY <custom path>)
または、すべてのターゲットに影響を与えるには、
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY <custom path>)
注意。ドキュメントから:
マルチ構成ジェネレーター (VS、Xcode) は、指定されたディレクトリに構成ごとのサブディレクトリを追加します。
この動作を示す例を次に示します。独自の簡単な C++ ソース ファイルを作成するため、これをフォルダーにコピーし、CMake を呼び出して、結果のソリューションを Debug、Release、MinSizeRel、および RelWithDebInfo でビルドするだけです。VS2012 でテスト済み。実行可能ファイルは<build dir>/Exes/Debug
、ビルドの種類に関係なく、常に最終的に になり、同様に、ライブラリは常に になり<build dir>/Libs/Debug
ます。
cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
project(Example)
file(WRITE lib.hpp "void Print();\n")
file(WRITE lib.cpp "#include<iostream>\nvoid Print() { std::cout << \"Hello World\\n\"; }\n")
file(WRITE main.cpp "#include \"lib.hpp\"\nint main() { Print(); return 0; }\n")
set(ArchiveOutputDir ${CMAKE_BINARY_DIR}/Libs/Debug)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${ArchiveOutputDir})
set(RuntimeOutputDir ${CMAKE_BINARY_DIR}/Exes/Debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${RuntimeOutputDir})
add_library(MyLib lib.cpp lib.hpp)
add_executable(MyExe main.cpp)
target_link_libraries(MyExe MyLib)