development

CMake 출력을 'bin'디렉토리로 만들려면 어떻게합니까?

big-blog 2020. 6. 5. 08:06
반응형

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, MINSIZERELRELWITHDEBINFO).


사용하다 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")


사용에 EXECUTABLE_OUTPUT_PATH필요한 경로를 설정 CMake 변수를. 자세한 내용은 온라인 CMake 설명서를 참조하십시오.

CMake 2.8.8 문서


$ 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)

영어는 제 모국어가 아닙니다. 입력 오류를 용서하십시오.

이 줄 설정을 사용하십시오 :
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
CMakeLists.txt 프로젝트를 배치하십시오.
이 $ {PROJECT_SOURCE_DIR}은 프로젝트가있는 현재 소스 디렉토리입니다.
와 방황은 왜 $ {EXECUTABLE_OUTPUT_PATH}이 경우
이 파일을 확인 CMakeCache.txt후, 키워드 검색 output path,
모든 변수가 여기에 정의를이 프로젝트에 대한 자세한 설명을 제공하는 모든setting·


기본 CMakeLists.txt 또는 개별 파일에서 이것을 정의하는지 여부에 관계없이 여전히 모든 libs 및 bin을 기본 경로에서 원한다고 가정합니다. 이는 가장 유용한 가정입니다.

참고 URL : https://stackoverflow.com/questions/6594796/how-do-i-make-cmake-output-into-a-bin-dir

반응형