Makefile 정보 – 파트 I

3609 단어
안녕하십니까,

오늘은 한 번에 많은 프로그램을 컴파일하는 효율적인 자동화 도구인 Makefilesmake 에 대해 간략하게 설명하겠습니다.

SPO600 프로젝트를 하다가 다양한 기능을 가진 많은 제품Makefiles을 접하고 어떻게 작동하는지 궁금해서 이렇게 글을 씁니다.

내가 가장 먼저 알아차린 것은 모든 Makefiles가 컴파일하는 것이 아니라 대부분 다음과 같은 플래그와 구성을 가지고 있다는 것입니다.Makefiles의 일반적인 용도는 other Makefiles에 포함할 변수를 설정하는 것입니다.



그러나 먼저 처음부터 어떻게 작동하는지 이해합시다.

Makefile의 목적은 무엇입니까?



AMakefilemake 명령이 호출될 때 읽을 일련의 명령입니다.
Make 그런 다음 Makefile를 읽고 지시에 따라 원하는 프로그램을 컴파일하고 링크합니다.
Makefile의 기능은 다음과 같은 여러 make 스크립트를 만드는 것입니다.
  • make : Makefile를 실행합니다.
  • make clean : Makefile 및 기타
  • 에서 컴파일한 바이너리를 지웁니다.
  • make install는 tar 패키지 및 기타 패키지를 만들고 설치합니다
  • .
  • make distcleanmake realclean는 make clean과 동일한 파일을 제거하지만 TAGS, makefiles 및 config.status 파일, make realclean는 .texinfo에서 생성된 정보 파일도 제거합니다.

  • The makefile can also tell make how to run miscellaneous commands when explicitly asked (for example, to remove certain files as a clean-up operation).
    

    출처: GNU

    Make는 어떻게 작동합니까?


    make 명령은 디렉토리를 읽고 Makefile 를 검색합니다. 그런 다음 첫 번째 규칙 처리를 시작합니다. 규칙은 대상, 전제 조건 및 레시피가 있는 지침입니다.

    A target is usually the name of a file that is generated by a program; examples of targets are executable or object files. A target can also be the name of an action to carry out, such as ‘clean’ (see Phony Targets).
    A prerequisite is a file that is used as input to create the target. A target often depends on several files.
    A recipe is an action that make carries out. A recipe may have more than one command, either on the same line or each on its own line. Please note: you need to put a tab character at the beginning of every recipe line! This is an obscurity that catches the unwary. If you prefer to prefix your recipes with a character other than tab, you can set the .RECIPEPREFIX variable to an alternate character (see Special Variables).
    


    원천:

    쉬워보이죠?
    이 다음 스크린샷을 보고 생각을 바꿔 보겠습니다.



    보시다시피 많은 변수가 사용되고 있기 때문에 무슨 일이 일어나고 있는지 이해하기가 정말 어렵습니다.

    변수를 사용하여 삶을 더 쉽게 만들 수 있습니까?



    예, 중복을 피하고 중복성을 줄이기 위해 변수를 설정할 수 있습니다.
    위의 스크린샷을 보면 두 번째 줄이 변수를 선언하고 여기에 값을 할당하는 것을 볼 수 있습니다.

    SKIPHEADERS = compat/s32pthreads.h
    


    이렇게 하면 사용하고 싶을 때마다 하기만 하면 됩니다$(SKIPHEADERS) .

    예를 들어:


    TESTOOLS가 선언되고 즉시 HOSTPROGS에서 사용됩니다.

    Makefilesmake에 대한 설명은 다음 포스팅에서 이어가도록 하겠습니다!
    거기서 만나요. 읽어주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기