web-dev-qa-db-ja.com

CMake出力を「bin」ディレクトリにするにはどうすればよいですか?

現在、プラグイン構造を使用してプロジェクトを構築しています。 CMakeを使用してプロジェクトをコンパイルしています。プラグインは個別のディレクトリにコンパイルされます。私の問題は、CMakeがコンパイルされ、バイナリとプラグイン、動的ライブラリがソースのディレクトリ構造に保存されることです。 CMakeで./ binディレクトリのようなファイルを保存するにはどうすればよいですか?

147

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]を追加して、出力ディレクトリを特定の構成に適用することができます(構成の標準値はDEBUGRELEASEMINSIZEREL、およびRELWITHDEBINFOです)。

247
Adam Bowen

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")を使用します

25
Oleg

EXECUTABLE_OUTPUT_PATH CMake変数を使用して、必要なパスを設定します。詳細については、オンラインのCMakeドキュメントを参照してください。

CMake 2.8.8ドキュメント

7
gtikok
$ cat CMakeLists.txt
project (hello)
set(EXECUTABLE_OUTPUT_PATH "bin")
add_executable (hello hello.c)
3
mcandre

私に関しては、私は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/"
)
2
Jayhello
cat CMakeLists.txt
project (hello)
set(CMAKE_BINARY_DIR "/bin")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
add_executable (hello hello.c)
1
Meet Modia

これをメインのCMakeLists.txtで定義するか、個々のCMakeLists.txtで定義するかに関係なく、メインパスからすべてのライブラリとビンが必要であることを前提としています。

0
Jerry Miller

英語は私の母国語ではありません。入力エラーを許してください。

この行構成を使用します:
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
CMakeLists.txtプロジェクトを配置します。
この$ {PROJECT_SOURCE_DIR}は、プロジェクトが配置されている現在のソースディレクトリです。
そしてさまよう理由が$ {EXECUTABLE_OUTPUT_PATH}の場合
このファイルCMakeCache.txtを確認してから、キーワードoutput pathを検索します。
すべての変数がここで定義され、プロジェクトの完全な説明がすべてsetting·提供されます。

0
jdir.s