현재 플러그인 구조로 프로젝트를 만들고 있습니다. 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
명령에 a가 없으면 불평하지 않아야합니다 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·
cat CMakeLists.txt
project (hello)
set(CMAKE_BINARY_DIR "/bin")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
add_executable (hello hello.c)
이것에 추가하려면 :
CMAKE를 사용하여 Visual Studio 솔루션 을 생성 하고 Visual Studio 에서 컴파일 된 파일을 / bin으로 출력하려면 Peter의 답변을 약간 수정해야합니다.
# 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 )