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
).
사용하다 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)
영어는 제 모국어가 아닙니다. 입력 오류를 용서하십시오.
이 줄 설정을 사용하십시오 :
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
'development' 카테고리의 다른 글
보호되거나 개인 생성자 만있는 클래스에서 :: std :: make_shared를 어떻게 호출합니까? (0) | 2020.06.05 |
---|---|
볼륨을 사용하여 고정 된 postgres 데이터베이스에 데이터를 유지하는 방법 (0) | 2020.06.05 |
Rails 3 앱에서 페이지 특정 JavaScript를 추가하는 가장 좋은 방법은? (0) | 2020.06.05 |
WordPress에서 현재 페이지 이름을 얻는 방법은 무엇입니까? (0) | 2020.06.05 |
CSS에서 id와 class의 차이점과 사용시기 (0) | 2020.06.05 |