gcc makefile 예제

그래서 지금 당신은 당신이 중소 규모의 소프트웨어 프로젝트를 관리하기 위해 수정할 수있는 완벽하게 좋은 메이크 파일을 가지고있다. 메이크 파일에 여러 규칙을 추가할 수 있습니다. 다른 규칙을 호출하는 규칙을 만들 수도 있습니다. makefiles 및 확인 기능에 대한 자세한 내용은 GNU Make Manual을 확인하여 지금까지 알고 싶었던 것보다 더 많은 것을 알려줄 것입니다. 이렇게 하면 두 개의 .c 파일을 컴파일하고 실행 가능한 hellomake의 이름을 지정합니다. -I.는 포함 파일 hellomake.h에 대한 현재 디렉토리 (.)에서 볼 수 있도록 포함됩니다. makefile없이, 테스트 / 수정 / 디버그 주기에 대한 일반적인 방법은 당신이 믹스에 몇 가지 더 .c 파일을 추가 한 후, 매번 입력 할 필요가 없도록 마지막 컴파일 명령으로 돌아가기 위해 터미널의 위쪽 화살표를 사용하는 것입니다. makefile에서 변수를 정의하는 가장 간단한 방법은 = 연산자입니다. 예를 들어, 변수 CC에 명령 gcc를 할당하려면: 그냥 cmake 또는 스콘을 사용합니다.

2016 년, 당신은 손으로 하나의 메이크 파일을 작성해서는 안됩니다! Make에서 이 작업을 수행하려면 대부분 패턴 규칙의 시작 부분에 출력 디렉토리를 미리 저장하기만 하면 됩니다. 예를 들어, 같은 패턴 대신 : %.o : %.c, 이는 같은 디렉토리에 .o 파일에 대한 .c 파일을 매핑할 것입니다, 당신은 사용할 수 있습니다 $(BUILD_DIR)%.o: %.c. 위의 예로 돌아가기, 확인이 실행될 때, 전체 명령 에코 “안녕하세요 세계”가 표시되었다 을 따르고 실제 명령 출력을 수행합니다. 우리는 종종 그것을 원하지 않습니다. 실제 명령에 대한 반향을 억제하려면 @: makefile의 시작 부분에 에코를 시작해야합니다 : 그러나 이것은 와일드 카드를 통해 찾기를 사용하여 거의 내 메이크 파일입니다. 아, 그리고 ctags 세대 물건. 또한 CMake는 크로스 플랫폼 빌드 시스템입니다. 무엇보다도, cmake는 당신을 위해 메이크 파일을 생성합니다. 대규모 프로젝트, 많은 라이브러리를 사용하는 빌드 및 플랫폼별 컴파일 문제를 처리하는 데 특히 유용합니다.

그것은 자동으로 생성 (종종 읽기 및 디버깅 하기 어려운) 다른 플랫폼에 대 한 makefiles. 작은 프로젝트의 경우, 직접 파일 작성이 더 쉬울 수 있습니다. cmake에 대한 자세한 내용은 앤디 다너의 Cmake 문서를 참조하십시오. 특히 스콘으로 비트를 얻은 한 가지 예 : 스콘이 실행되는 곳과 다른 디렉토리에서 컴파일러를 실행해야하는 경우가 있었습니다. 스콘이 컴파일러를 실행하는 디렉토리를 제어하는 것은 실제로 _really hard_http://scons.org/doc/2.1.0/HTML/scons-user/x3398.html 입니다. 프로젝트. Gcc/Clang은 생성된 커버리지 파일에 해당 소스에 대한 경로를 넣고 커버리지 보고서를 생성할 때 해당 경로를 사용합니다. 우리의 프로젝트는 매우 크고 실제로 다른 구성 요소에 대한 여러 스콘 `variant_dirs`를 사용했다.

그리고 서로 다른 구성 요소가 함께 연결되고 실행될 때 결과 커버리지 데이터에는 서로 다른 디렉터리와 관련된 소스 경로가 있었습니다. 그리고 항상 일관된 디렉토리에서 gcc를 실행하거나 혼란을 풀기 위해 gcov / lcov에게 스콘에게 말할 수있는 방법은 없었습니다.

Posted in Uncategorised