2014-07-13 3 views
0

나는 그것을 배우고 올바르게 사용하려고 노력하면서, 나는 심한 정신을 잃었다. 내가 ~/project라는 디렉토리가cmake가 빌드 디렉토리에 'source'디렉토리를 만드는 이유는 무엇입니까?

:

여기 내 설정입니다. 이 디렉토리에서 내가 가진 :

  • build 디렉토리
  • source 디렉토리
  • includes 디렉토리.
  • CMakeLists.txt 파일

    cmake_minimum_required(VERSION 2.8) 
    project(myProject) 
    subdirs(source) 
    

    가 나는 또한 ~/project/source 다른 CMakeLists.txt을 가지고, 그 내용은 다음과 같습니다 :

CMakeLists.txt 파일의 내용은 내가 빌드 디렉토리로 이동

cmake_minimum_required(VERSION 2.8) 
include_directories("~/project/includes") 
add_executable(exec entry.cpp) 

지금하는 비어 있으며 cmake ..을 수행하십시오. 이것은 잘 작동합니다. 그러나 나는 '소스'디렉토리가 here처럼 생성되도록합니다.

왜 생성되고 있습니까? 나는 무슨 일이 일어나고 있는지 모른다. 내가 이해할 때,이 일을해서는 안되며, 'source'디렉토리를 제외하고 여기서 본 모든 것을 나에게 제공해야한다.

감사합니다.

답변

1

빌드 디렉토리 내에 CMake는 프로젝트의 전체 디렉토리 구조를 다시 만듭니다. 합리적인 것은 프로젝트 구조를 유지하는 것입니다. 몇 가지 하위 폴더 및 소스, 라이브러리 및 테스트가 의미있는 방식으로 분산되어있는 더 큰 프로젝트를 이미지화하십시오. 테스트를 실행하려면 소스 디렉토리가 아닌 빌드 디렉토리에 테스트 소스가있는 구조를 따라야합니다.

적어도 CMake가 알고있는 한 프로젝트는 source 하위 디렉토리이므로이 폴더 만 생성됩니다.

정말로 소스 프로젝트가 있다면, CMake 프로젝트를 source 안에 배치하는 것이 더 나은지 확실하지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나, 내가 이해하는 한, 빌드 디렉토리는'make '가 실행 된 후에 실행 파일을 저장하기로되어 있었다. 전체 소스 구조를 다시 만드는 이유는 무엇입니까? 나는 그 일을하기로되어 있다고 생각하지 않는다. – Spacey

+0

그 일을하기로되어 있는데, 나는이 주장에 대한 좋은 원천을 찾을 수 없었다. '~/project'와'~/project/source'에있는 실행 파일을 가지고 있다면'~/project/build'와'~/project/build/source'로 구분됩니다. 앞에서 말했듯이,'sources'에 소스 만 있다면 CMake 프로젝트의 루트 디렉토리로 만들 수 있습니다. – usr1234567

+0

그래서, 다시 말해 보겠습니다. build 디렉토리에서'make'를 실행하면, 실행 파일은 어디에 생성 될까요? – Spacey

관련 문제