2013-05-06 2 views
1

이번 학기에 처음으로 프로젝트를 만들었으며 메이크 파일로 제출하도록 요청 받았습니다. 인터넷에서 사용할 수있는 문학은 약간 압도적이며 내 게으름과 결합되어, 나는 간단한 해답을 위해 stackoverflow에 왔습니다. 나는 this answer에 의하여 Brendan Long에 의하여 시작되는 좋은 장소이라고 찾아 냈다.C++ 용 메이크 파일 시작하기 (CMake 또는 GNUMake?)

그가주는 예는 다음과 같습니다

all: a3driver.o 
g++ -o a3driver a3driver.o 

a3driver.o: a3driver.cpp 
g++ -c a3driver.cpp 

나는 이해한다. 이것은 유닉스 시스템에서 보았던 make 파일과 똑같이 생겼으며, 나는 C++ 파일을 컴파일하는데 사용했다. (단지 사용되었지만 이해할 필요가 없었다.)

그러면 더 이상 검색하고 this question에 대한 대답은 위에 붙여 넣은 코드와 완전히 다른 CMake를 사용하는 것이 좋습니다.

제 질문은이 단계에서 어떤 방향으로해야합니까? CMake 나 GNUMake에 대해 배워야할까요? C++ 파일에 대해서만 작업 할 생각입니다.

compile: 
     g++ myprogram.cpp -o myprogram 

(라인이 탭이 아닌 공백으로 들여 쓰기되어야합니다) : 당신은, 당신이 함께 할 하나 또는 몇 개의 파일을 컴파일 정말 정말 죽은 간단한 메이크 필요한 경우

답변

1

.

유연성이 필요한 경우 CMake와 함께 올바른 길을 가고 있습니다. 좋은 튜토리얼이나 간단한 예제를 시작으로 CMake를 탐험 해보길 바란다. 기본은 매뉴얼에서 배우기보다는 코드에서 벗어나게 간단하다.

내 개인적인 opionion은 초보자를 놀라게하고 숙련 된 사용자를 속이는 비정상적이고 자세한 구문 때문에 GNU Automake (대개 Autohell이라고 함)를 피하는 것입니다.

EDIT : CMake는 컴파일에 사용되지 않고, 을 생성 할 수 있습니다. 프로젝트의 종합적인 설명 (컴파일 할 파일은 어디에 있습니까? 필요한 라이브러리는 무엇입니까?). 그리고 라이브러리를 검사하고, 컴파일러를 확인하고, 다른 방법으로 코드 작성해야하는 다른 온 전성 체크를 수행함으로써이를 수행합니다.

1

귀하의 요구에 크게 의존하기 때문에이 질문에만 답할 수 있습니다. Cmake는 빌드 제어 프로그램이 아닌 "빌드 제어 파일 생성기"입니다. 실제로 코드를 만들지는 않으며 대신 makefile 또는 Visual Studio/Xcode/Eclipse 프로젝트 파일을 만듭니다. 그런 다음 빌드 프로그램 (make, Visual Studio, XCode, Eclipse)을 사용하여 실제로 코드를 빌드합니다.

Cmake는 네이티브 빌드 환경을 사용하는 모든 다른 아키텍처에서 이러한 모든 유형의 빌드를 모두 지원해야하는 경우에 적합합니다. GNU make가 빌드해야하는 아키텍처에서 make를 사용하게되어 기쁘다면 (물론 GNU make는 모든 것들에서 실행될 수 있습니다. Visual Studio를 제외한 모든 IDE는 native make와 잘 통합됩니다) make를 직접 사용하는 것이 좋습니다. GNU make에는 매우 유연한 고급 기능이 많이 있습니다.

나는 autotools의 esseks 평가에별로 동의하지 않는다. 그러나 나는 그것이 매우 일반적인 의견이라는 것을 알고있다. 또한 automake 자체는 이상하고 상세한 구문을 사용하지 않는다. automake 파일은 단지 makefile이다. 그러나 그들은 처리되어야하고, autoconf는 그것이 어떻게 끝 났는지입니다 ... autoconf는 당신의 필요에 따라 사람이 그것을 만드는 것처럼 나쁘지는 않지만 더 모호합니다. 그러나이 토론을위한 장소가 아닙니다.

필자는 개인적으로 autotools보다 성가신 이상한 cmake 형식을 찾아 내 다양한 ​​요구 사항을 충족하지 못합니다 (예 : 크로스 컴파일 지원이 autotools만큼 좋지 않음). 그러나 네이티브 프로젝트 파일을 생성하는 기능이 정말 뛰어나다 고 말하면됩니다.