2016-07-10 2 views
1

cmake는 내가 바라는 것보다 훨씬 쉽습니다. 다음과 같은 프로젝트 구조가 작동하도록 내가 하나 (또는 ​​여러 개) CMakeLists.txt 파일을 만드는 방법, 나 자신이 무엇을 물어 순간 :cmake 및 QT로 여러 프로젝트 구성

보다 구체적으로
my workspace 
    src 
     project1 
     project2 
    build 
     project1 
     project2 

, 나는 다음과 같은 두 가지 제약 조건을 결정해야 한 그 내 프로젝트 구조와 내 CMakeLists.txt 파일 :

1) 저는 자식을 사용하고 CMakeLists.txt과 내 소스 파일 만 커밋하고 싶습니다. 빌드는 IDE를 통해이 프로젝트에서 작업하고 싶은 특정 사용자마다 생성해야합니다 그의 욕망의

2) 누군가가 복제하면 내 저장소, 그는이 프로젝트

3) src 디렉토리가 있어야합니다 작업을 할 수 있도록, 그/그녀가하고자하는 IDE를위한 (/my workspace/build/project1/my workspace/build/project2) 전술 한 바와 같이 디렉토리를 빌드 cmake를 실행할 수 있습니다 프로젝트에서 일하는 사람이 원하는 IDE로이 작업을 수행 할 수 있도록 정리하십시오. src 파일을 변경하고 CMakeLists.txt을 입력 한 다음 나중에 수행 한 작업을 커밋하여 다른 모든 사람이 다시 계산할 수 있고 같은 방식으로 작업 할 수 있습니다.

그런 식으로 협업에 큰 이점! 그러나 cmakecmake이 호출 된 디렉토리에 모든 것을 빌드하는 것처럼 보입니다. 질문에 대한 지금

:

a)에 대응하는 빌드로 내 원하는 디렉토리를 작성하기 위해, 새롭게에서 cmake/my workspace/build/project1/my workspace/build/project2 폴더를 만들 호출하는 것보다 다른 방법이?

b) 공동 작업을 위해 다른 디렉토리 구조를 선호합니까?

c) b)에 예인 경우 CMakeLists.txt 파일을 어디에서 가져 왔습니까? cmake은 어디에서 왔으며 일반적으로 작성하는 프로세스는 무엇입니까?

d) QT는 잘 작동하는 것으로 보이는 moc 파일을 만듭니다. 당신은 어떤 식 으로든 저 지르지 않습니까? 아니면 체크 아웃하는 모든 사람들을위한 디렉토리를 만들고 그걸 사용할 수 있는지 확인해야합니까?

+1

생성 된 모든 파일을 빌드 폴더에 넣습니다.이 파일에는 moc, ...에 의해 생성 된 파일이 포함되어 있습니다. – drescherjm

+0

내 빌드 폴더는 작업 영역이 아닌 완전히 다른 트리에 있습니다. 그 이유는 내가 창문에 건물이고 각 소스 트리에 대한 폴더를 두 개 이상 가지고 있도록 두 개 이상의 컴파일러와 내 프로젝트를 빌드합니다. – drescherjm

답변

0

빌드 디렉토리는 결정할 항목이 아닙니다. 다른 개발자는 빌드 디렉토리를 넣을 위치를 선택할 것입니다. (나는 'outside'설정이 있습니다 : https://stackoverflow.com/a/38140914/4742108). 빌드 디렉토리는 저장소로 커밋되지 않습니다.

CMakeLists.txt은 프로젝트입니다. 두 가지 프로젝트가 있으므로 CMake의 관점에서 어떤 식 으로든 관련되어서는 안됩니다. 또한 동일한 저장소에 커밋해야하는지 결정해야합니다.

moc 파일은 어디에서도 커미트되지 않습니다. *.o 파일이나 컴파일러에서 생성하는 중간 항목과 마찬가지로 각 빌드에 대해 로컬입니다.

+0

하위 폴더를 CMakeList에 포함시킬 수있는 이유는 무엇입니까?txt 그러면 빌드 할 때 두 개의'vcxproj'를 가진 완벽한 sln이 생깁니 까? 하나의 비즈니스 프로젝트는 많은 C++/VC/cmake 프로젝트로 구성 될 수 있습니다. – IceFire

+0

나는 당신이 VCake 프로젝트가 아니라 CMake 프로젝트에 대해 이야기하고 있다고 가정했다. (CMake 프로젝트 -'CMakeLists.txt'에'project (...)를 쓸 때) – Velkan

+0

네,'project (...)'가 맨 위'CMakeLists.txt'에 있고 project1과 project2도' 'add_subdirectory'를 통해 포함 된 'CMakeLists.txt' 파일을 생성합니다. 최소한, 이것은 가장 직관적 인 조직 인 것처럼 보이지만, 제발 제가 잘못하면, 저는 cmake와 일하기 시작합니다! – IceFire