現在、プラグイン構造でプロジェクトを構築しています。CMakeを使用してプロジェクトをコンパイルしています。プラグインは別のディレクトリにコンパイルされます。私の問題は、CMakeがバイナリとプラグイン、動的ライブラリをコンパイルしてソースのディレクトリ構造に保存することです。CMakeでファイルを./binディレクトリなどに保存するにはどうすればよいですか?
現在、プラグイン構造でプロジェクトを構築しています。CMakeを使用してプロジェクトをコンパイルしています。プラグインは別のディレクトリにコンパイルされます。私の問題は、CMakeがバイナリとプラグイン、動的ライブラリをコンパイルしてソースのディレクトリ構造に保存することです。CMakeでファイルを./binディレクトリなどに保存するにはどうすればよいですか?
回答:
Olegの答えのように、設定する正しい変数はCMAKE_RUNTIME_OUTPUT_DIRECTORYであると思います。ルートCMakeLists.txtで以下を使用します。
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
ターゲットごとに出力ディレクトリを指定することもできます。
set_target_properties( targets...
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
どちらの場合も、あなたは追加することができ_[CONFIG]
、出力ディレクトリは(設定するための標準的な値は、特定の構成に適用するために、変数/プロパティ名にDEBUG
、RELEASE
、MINSIZEREL
およびRELWITHDEBINFO
)。
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
コマンドがinstall(TARGETS <target_name>)
まだ「実行可能ターゲットの実行時の宛先が指定されていません」について不平を言っていることを考慮して、を設定する目的は何ですか?この変数はおそらくデフォルト値を提供するので、install
コマンドはの不在について文句を言うべきではありませんRUNTIME DESTINATION
。
EXECUTABLE_OUTPUT_PATH
CMake変数を使用して、必要なパスを設定します。詳細については、オンラインのCMakeドキュメントを参照してください。
私はcmake 3.5を使用していますが、以下(set variable
)は機能しません。
set(
ARCHIVE_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
LIBRARY_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
RUNTIME_OUTPUT_DIRECTORY "/home/xy/cmake_practice/bin/"
)
しかし、これは機能します(set set_target_properties
):
set_target_properties(demo5
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
LIBRARY_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
RUNTIME_OUTPUT_DIRECTORY "/home/xy/cmake_practice/bin/"
)
英語は私の母国語ではありません。入力ミスをお許しください。
この行構成を使用し
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
ます。CMakeLists.txtプロジェクトを配置します。
この$ {PROJECT_SOURCE_DIR}は、プロジェクトが配置される現在のソースディレクトリです。
そして、なぜ{{EXECUTABLE_OUTPUT_PATH}であるかわからない場合は、
このファイルを確認してからCMakeCache.txt
、キーワードを検索しますoutput path
。
すべての変数がここで定義します。プロジェクトの完全な説明がすべて表示されます。 setting·
これに追加するには:
あなたが生成するCMAKEを使用している場合のVisual Studioソリューションを、あなたが望むのVisual Studioをに/ binに出力コンパイルされたファイルに、ピーターの答えは少し変更する必要があります。
# set output directories for all builds (Debug, Release, etc.)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/lib )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/lib )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_SOURCE_DIR}/bin )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )