2014-09-12 2 views
0

프로젝트 구조에 binlib과 같은 폴더가 있지만 일반적으로 (적어도 본 튜토리얼에서는) 사람들이 build이라는 폴더를 만들고 cmake ..이라는 폴더를 만드는 이유를 알고 싶습니다.CMake 빌드 및 프로젝트 디렉토리

${CMAKE_BINARY_DIR}/bin 또는 ${CMAKE_SOURCE_DIR}/bin을 사용하여 프로젝트를 빌드하는 것이 올바른 방법일까요?

+0

질문을 올바르게 이해하면 디렉토리 구조의 시작점은 https://www.gnu.org/prep/standards/html_node/Directory-Variables.html이됩니다. 이것은 설치 디렉토리에 적용됩니다. 가능한 경우 설치 디렉토리와 해당 소스를 다소 관련시키는 데 도움이 될 수 있습니다. 소스 외부 나 빌드 서브 디렉토리 아래의 소스에서 완전히 빌드하는 것은 개인적인 취향의 문제입니다. –

+0

severals 라이브러리가 있다고 가정하고 응용 프로그램에서 해당 라이브러리를 사용한다고 가정 해보십시오. 라이브러리 디렉토리에서 라이브러리 파일을 갖는 것이 더 좋지 않습니까? 설치 프로그램이 파일을 다른 디렉토리로 옮깁니다. 그러나 응용 프로그램에서 라이브러리를 사용해야하는 경우에는 어떻게해야합니까? - 저는 이것을 분리 라이브러리로 분리하여 라이브러리로 포함 시켰습니다. – yayuj

+1

응용 프로그램에서 라이브러리를 사용해야하는 경우 모두 동일합니다. 공유 객체로 라이브러리를 빌드하는 경우 응용 프로그램이 설치된 라이브러리 버전에 링크되도록해야합니다 (자세한 내용은 http://www.cmake.org/Wiki/CMake_RPATH_handling 참조). 라이브러리가 응용 프로그램에서 독점적으로 사용되는 경우 항상 정적으로 링크 할 수 있으며이 경우 라이브러리를 설치할 필요조차 없습니다. 라이브러리가 빌드 디렉토리에있는 곳은 대부분 개인적인 선택입니다. –

답변

1

맞습니다. CMake를 사용하는 사람들은 종종 다른 디렉토리 (예 : build)에 빌드하는 경우가 많습니다. 소스 트리에서 빌드 된 아티팩트를 유지하여 소스 트리에서 체크하지 않도록하기 때문에 유용합니다.

binlib은 Unix 기반 아키텍처의 일반적인 이름입니다. 실행 가능한 파일과 라이브러리를 각각 저장하는 디렉토리 용 시스템. 이런 식으로 분리 된 빌드 아티팩트를 유지하는 것이 좋으며, 실행할 수있는 것들을 찾을 곳과 빌드 할 수있는 것들을 찾아야하기 때문입니다. CMake의 일반적인 설정은 binlib을 포함하는 build 디렉토리를 갖는 것입니다. 빌드 규칙을 올바르게 설정하면 빌드를 실행할 때 CMake가 binlib을 생성합니다.

+0

좋은 설명. 나는 "out of source"방식으로 사용할 것이라고 생각한다. – yayuj