makefile 예제

나쁘지 않아요! 또한 소스 외 빌드에 대해 신경 쓰지 않는다면 기본 제공 암시적 규칙을 활용하는 더 간단한 Makefile을 사용할 수 있습니다. 어쨌든 내가 이 오류를 받았을 때 : 찾기 : 경로가 식 앞에 있어야합니다 : ….cpp 여기에 monte_pi_sprng.c 프로그램에 대한 메이크 파일입니다 : makefiles에 대한 자세한 내용은 완전한 참조 및 예제를 제공하는 GNU Make 설명서를 참조하십시오. 원하는 대로 이러한 Makefile 예제를 자유롭게 사용하고 배포할 수 있습니다. 명시적 라이센스가 필요한 경우: https://gist.github.com/jvranish/ae92266fa3039a5e5e8dc4cbc265f225 위의 예에서 say_hello는 모든 프로그래밍 언어에서와 같이 함수 이름처럼 작동합니다. 이를 대상이라고 합니다. 필수 구성 조건 또는 종속성은 대상을 따릅니다. 간단히 하기 위해 이 예제에서는 필수 구성 조건을 정의하지 않았습니다. 명령 에코 “안녕하세요 세계”레시피라고합니다. 레시피는 대상을 만들기 위해 필수 구성 조건을 사용합니다. 대상, 필수 구성 조건 및 레시피가 함께 규칙을 만듭니다. 흥미로운 기사. 그것은 내가 메이크 파일놀러와 함께 놀도록 동기를 부여합니다. 최종 단순화로:의 왼쪽과 오른쪽인 특수 매크로 $@ 및 $^를 사용하여 전체 컴파일 규칙을 보다 일반화해 보겠습니다.

아래 예제에서는 모든 포함 된 파일 매크로 DEPS의 일부로 나열 되어야 하 고 모든 개체 파일 매크로 OBJ의 일부로 나열 해야 합니다. 먼저 터미널에 클래식 “Hello World”를 인쇄해 보겠습니다. 이 콘텐츠가있는 파일 Makefile을 포함하는 빈 디렉토리 myproject 만들기 : 이 규칙을 Makefile 또는 makefile이라는 파일에 넣은 다음 명령 줄에 makecreate를 입력하면 makefile에 작성한 대로 컴파일 명령을 실행합니다. 인수없이 확인은 파일의 첫 번째 규칙을 실행합니다. 또한 명령이 다음 의 첫 번째 줄에 의존하는 파일 목록을 배치하여 해당 파일중 어느 것이라도 변경되면 hellomake 규칙을 실행해야 한다는 것을 알고 있어야 합니다. 즉시 #1 문제를 해결하고 마지막 컴파일 명령을 찾고 위로 화살표를 반복적으로 사용하지 않도록 할 수 있습니다. 그러나 시스템은 여전히 최신 변경 사항만 컴파일하는 측면에서 효율적이지 않습니다. Makefiles는 코드 컴파일을 구성하는 간단한 방법입니다.

이 튜토리얼은 심지어 메이크를 사용하여 가능한 것의 표면을 긁지 않지만, 빠르고 쉽게 중소 규모의 프로젝트에 대한 자신의 makefiles을 만들 수 있도록 스타터 가이드로 의도된다. 특히 스콘으로 비트를 얻은 한 가지 예 : 스콘이 실행되는 곳과 다른 디렉토리에서 컴파일러를 실행해야하는 경우가 있었습니다. 스콘이 컴파일러를 실행하는 디렉토리를 제어하는 것은 실제로 _really hard_http://scons.org/doc/2.1.0/HTML/scons-user/x3398.html 입니다. 프로젝트. Gcc/Clang은 생성된 커버리지 파일에 해당 소스에 대한 경로를 넣고 커버리지 보고서를 생성할 때 해당 경로를 사용합니다. 우리의 프로젝트는 매우 크고 실제로 다른 구성 요소에 대한 여러 스콘 `variant_dirs`를 사용했다. 그리고 서로 다른 구성 요소가 함께 연결되고 실행될 때 결과 커버리지 데이터에는 서로 다른 디렉터리와 관련된 소스 경로가 있었습니다. 그리고 항상 일관된 디렉토리에서 gcc를 실행하거나 혼란을 풀기 위해 gcov / lcov에게 스콘에게 말할 수있는 방법은 없었습니다.

makefile에서 변수를 정의하는 가장 간단한 방법은 = 연산자입니다. 예를 들어, 변수 CC에 명령 gcc를 할당하려면: 그 중 하나를 사용하려면 Makefile이라는 파일 호출에 만들기 코드를 넣습니다(TAB 문자가 복사되는지 확인합니다! 확인은 그에 대해 매우 까다롭습니다) 및 디렉토리 또는 ./src의 하위 디렉토리의 모든 소스와 헤더 (SRC_DIRS를 변경 하여이 디렉토리를 변경할 수 있습니다).

Shares

Posted on 2nd August 2019 in Uncategorised

Share the Story

About the Author

Back to Top
Shares