2010-12-27 2 views
2

저는 CMake를 처음 접했고 C++을 재 학습했기 때문에 이것이 적절한 질문이되기를 바랍니다. 나는 프로젝트가/projects/A 디렉토리에 있고 어떤 .h 파일이/projects/include/open-source-project-1에있다. CMake 기본 프로젝트 설정

 
Sample Hierarchy: 
/projects 
    /CMakeLists.txt 
    /A 
    /CMakeLists.txt 
    /a.cpp 
    /B 
    /CMakeLists.txt 
    /include 
    /open-source-project-1 
     /includeMe.h 
    /open-source-project-2 
  1. 내가 cmake의 include_directories의() 명령을 사용해야합니까? 그렇다면 어떤 CMakeLists.txt 파일에 넣어야합니까? (많은 변형을 시도했습니다)
  2. 다른 cmake 명령이 필요합니까?
  3. CMakeLists.txt 최상위 레벨에 넣으면 프로젝트 또는 B 프로젝트의 .cpp 파일에 #include를 모두 포함시켜야합니까?
  4. 이것은 C++ 프로젝트의 일반적인 설정입니까? 그것은 논리적으로 보입니까? 모든 프로젝트는 직접 서로 관계를 어떻게 든 또는 그렇지 않으면 확인할 수없는 종속성이없는 한

답변

3

최상위 CMakeLists.txt 파일 필요하지입니다. 관련없는 개의 프로젝트는 서로를 포함하면 안되며 부모 목록 파일이 필요합니까? A와 B는 별도의 프로젝트, ./A/CMakeLists.txt./B/CMakeLists.txt 적어도이 줄을 포함해야한다이 경우

  1. :

    include_directories(../include) 
    

    그렇지 않으면, A와 B는 부품 큰 단일 프로젝트의이 경우, 이 줄을 최상위 파일 CMakeLists.txt에 넣는 것이 적절합니다.

    include_directories(include) 
    add_subdirectory(A) 
    add_subdirectory(B) 
    
  2. 별도의 프로젝트에만 해당됩니다. cmake을 한 번 호출하면 하나가 빌드 트리가됩니다. 빌드 트리에 대한 하나의 프로젝트 만 있으면됩니다.

  3. 아니요. 최상위 목록 파일에 add_subdirectory 지시문이있는 경우에만 다른 목록 파일에 영향을줍니다.
  4. 아니요, 비정형입니다.
+0

감사합니다. 매우 도움이되었습니다. 보조 노트와 마찬가지로, include_directories (../ include/open-source-project-1)를 사용하면서 #include 를 a.cpp에 사용하고 있었지만, a 해당 파일 또는 디렉토리 오류가 없습니다. include_directory (../ include)를 사용하여 수정되었습니다. – blastthisinferno