現在、プラグイン構造を使用してプロジェクトを構築しています。 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
です)。
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")
を使用します
EXECUTABLE_OUTPUT_PATH
CMake変数を使用して、必要なパスを設定します。詳細については、オンラインのCMakeドキュメントを参照してください。
$ cat CMakeLists.txt
project (hello)
set(EXECUTABLE_OUTPUT_PATH "bin")
add_executable (hello hello.c)
私に関しては、私は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/"
)
cat CMakeLists.txt
project (hello)
set(CMAKE_BINARY_DIR "/bin")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
add_executable (hello hello.c)
これをメインのCMakeLists.txtで定義するか、個々のCMakeLists.txtで定義するかに関係なく、メインパスからすべてのライブラリとビンが必要であることを前提としています。
英語は私の母国語ではありません。入力エラーを許してください。
この行構成を使用します:set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
CMakeLists.txtプロジェクトを配置します。
この$ {PROJECT_SOURCE_DIR}は、プロジェクトが配置されている現在のソースディレクトリです。
そしてさまよう理由が$ {EXECUTABLE_OUTPUT_PATH}の場合
このファイルCMakeCache.txt
を確認してから、キーワードoutput path
を検索します。
すべての変数がここで定義され、プロジェクトの完全な説明がすべてsetting·
提供されます。