리눅스 만들다 명령은 소스 코드에서 프로그램 및 파일 그룹을 구축하고 유지하는 데 사용됩니다. Linux에서는 개발자가 가장 자주 사용하는 명령 중 하나입니다. 개발자가 터미널에서 많은 유틸리티를 설치하고 컴파일하는 데 도움이 됩니다. 또한 대규모 프로젝트의 컴파일 프로세스를 처리합니다. 컴파일 시간이 절약됩니다.
make 명령의 주된 목적은 큰 프로그램을 부분으로 결정하고 다시 컴파일해야 하는지 여부를 확인하는 것입니다. 또한 이를 다시 컴파일하는 데 필요한 명령을 내립니다.
C++ 프로그래밍 언어는 객체 지향 언어이므로 이 섹션에서는 C++ 프로그램을 사용하지만 컴퓨터에 설치된 모든 언어를 사용할 수 있습니다. 이는 프로그램에만 국한되지 않습니다. 다른 작업을 설명하는 데에도 사용할 수 있습니다.
make 명령은 어떻게 작동하나요?
make 명령은 대상을 인수로 사용합니다. 이러한 인수는 'Makefile'에 지정됩니다. 메이크파일에는 대상과 이러한 대상과 관련된 관련 작업이 포함되어 있습니다.
make 명령을 실행하면 makefile을 검색하고 스캔하여 대상을 찾고 해당 종속성에 액세스합니다. 종속성을 지정하지 않으면 종속성을 검색하여 빌드합니다. 종속성이 빌드된 후 기본 대상을 빌드합니다.
예를 들어, 하나의 소스 파일만 변경하고 make 명령을 실행하는 경우; 따라서 해당 소스 파일과 연결된 개체 파일만 컴파일됩니다. 프로젝트의 최종 편집 과정에서 많은 시간을 절약할 수 있습니다.
메이크파일이란 무엇입니까?
make 명령은 makefile의 실행을 호출합니다. 프로젝트를 유지하기 위해 생성하는 셸 명령이 포함된 특수 파일입니다. makefile에는 실행을 위한 대상과 명령이 포함되어 있습니다. 하나 이상의 makefile을 생성하는 것은 허용되지 않습니다. 별도의 디렉터리를 만드는 것이 좋습니다.
최근 파일을 추적하므로 필요한 파일만 업데이트하세요. 소스 파일이 많은 대규모 프로그램이 있는 경우 모든 종속 파일을 다시 컴파일해야 합니다. 따라서 이는 매우 시간이 많이 걸리는 과정일 수 있습니다.
makefile에는 표준 목록이 있습니다. 이러한 표준은 시스템이 실행하려는 명령을 이해하는 데 도움이 됩니다. 이러한 표준은 두 부분으로 구성되어 있으며 새 줄로 구분됩니다. 첫 번째 줄은 의존성 라인, 후속 라인은 다음과 같이 간주됩니다. 행동이나 명령 에스. 명령은 새 줄에서 탭으로 구분됩니다.
그만큼 의존성 각 파일과 소스 파일의 관계를 지정합니다. 그리고 표적 실행파일로 make 명령어 실행 후 생성됩니다.
옵션
make 명령은 다양한 옵션을 사용하여 보다 구체적으로 만들 수 있습니다. 몇 가지 중요한 옵션은 다음과 같습니다.
-p -f/dev/null을 만듭니다.
make 명령의 몇 가지 예를 살펴보겠습니다. makefile의 기본 사용법을 살펴보고 더 나아가 몇 가지 C++ 프로그램과 makefile을 만들 것입니다. make 명령을 더 잘 이해하기 위해 몇 가지 작업을 수행하겠습니다.
자바스크립트를 위해 잠자기
make 명령의 기본 사용법
make 명령의 가장 기본적인 사용법을 이해하고 이것이 어떻게 작동하는지 이해하는 데 도움이 될 수 있습니다.
'project' 디렉터리를 만들고 해당 디렉터리로 변경합니다. 아래 명령을 고려하십시오.
mkdir project cd project
이제 '메이크파일' 첫 번째 프로그램에는 다음과 같은 내용이 있습니다.
자바의 컬렉션
say_hello: echo 'Hello World!'
위 파일에서 say_hello는 모든 프로그래밍 언어에서 함수처럼 동작하는 대상이고, echo는 액션으로 간주됩니다. 액션은 다음을 사용하여 작성되어야 한다는 점을 기억해야 합니다. 탭. 대상과 작업이 함께 makefile에 대한 규칙을 만듭니다. 이제 다음과 같이 make 명령을 실행합니다.
아래 출력을 고려하십시오.
위 출력에서 에코 작업 자체가 표시되는 것을 볼 수 있습니다. 출력에 echo 명령을 표시하지 않으려면 다음으로 시작하는 echo를 실행하십시오. '@' 상징. 에코를 억제하려면 다음과 같이 makefile의 내용을 업데이트하십시오.
say_hello: @echo 'Hello World!'
아래 출력을 고려하십시오.
대상은 작업에 따라 달라지는 바이너리 파일일 수 있습니다.
makefile에 생성 및 나열과 같은 몇 가지 대상을 더 추가해 보겠습니다. 다음과 같이 makefile을 업데이트합니다.
say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
make 명령을 실행하면 makefile의 기본 대상이기 때문에 첫 번째 대상만 실행됩니다. 아래 출력을 고려하십시오.
아래 내용을 makefile에 포함하여 기본 대상을 변경할 수 있습니다.
.DEFAULT_GOAL := generate
다음과 같이 파일의 첫 번째 줄에 추가합니다.
위 메이크파일은 '생성'을 기본 목표로 간주합니다. make 명령을 실행하면 다음과 같이 출력됩니다.
DEFAULT GOAL 옵션은 하나의 대상만 실행하여 모든 옵션을 사용하도록 둘 이상의 대상을 지정합니다. 둘 이상의 대상을 지정하려면 다음과 같이 makefile의 첫 번째 줄을 업데이트하세요.
all: say_hello generate
지정된 대상을 실행합니다. 아래 출력을 고려하십시오.
모든 타겟을 실행할 수 있는 또 다른 옵션이 있습니다. makefile의 모든 대상을 실행하려면 다음과 같이 파일을 업데이트하십시오.
.PHONY: all say_hello generate list say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
위 파일은 지정된 모든 목표를 수행합니다. make 명령을 실행하고 아래 출력을 고려하십시오.
make 명령의 고급 사용
main.cpp, function1.cpp, function2.cpp 파일과 function.h 종속 파일이 있는 C++ 프로젝트를 만들어 보겠습니다.
파일의 코드는 다음과 같습니다.
특수문자가 뭐야?
메인.cpp:
#include #include 'functions.h' int main() { print_hello(); std::cout<< std::endl; std::cout<< 'The factorial of 5 is' << factorial(5) << std:: endl; return 0; }
function1.cpp:
#include 'functions.h' int factorial(int n) { if(n!=1) { return (n * factorial(n-1)); } else return 1; }
function2.cpp:
#include #include 'functions.h' void print_hello() { std::cout << 'Hello World'; }
함수.h:
void print_hello(); int factorial (int n);
이제 아래 명령을 실행하여 위 프로젝트의 실행 파일을 만듭니다.
g++ main.cpp function1.cpp function2.cpp -o hello
위의 명령은 실행 파일을 생성합니다 '안녕하세요' main.cpp, function1.cpp 및 function2.cpp 파일 중 하나입니다.
아래 출력을 고려하십시오.
위 출력에서 성공적으로 실행되면 아무런 출력도 제공되지 않습니다.
makefile을 사용하여 동일한 작업을 수행해 보겠습니다.
파일을 다음과 같이 생성합니다. 메이크파일 그리고 아래 코드를 넣어주세요.
all: g++ main.cpp function1.cpp function2.cpp -o hello
all 키워드는 대상에 사용되며 개행에서는 위와 같은 TAB과 동일한 명령을 입력하여 작업을 지정합니다. 파일을 저장합니다. 아래 파일을 고려하십시오.
작동하려면 다음과 같은 명령을 실행하십시오.
자바 색상 코드
make
위 명령은 지정된 파일의 'hello' 실행 파일을 생성합니다. 아래 출력을 고려하십시오.
Makefile에 몇 가지 작업을 더 추가해 보겠습니다. 작업 추가 '엮다' 다음과 같이:
all: compile: g++ main.cpp function1.cpp function2.cpp -o hello
작업을 실행하려면 엮다, 아래 명령을 실행하십시오.
make compile
위의 명령은 컴파일 작업을 실행합니다. 아래 출력을 고려하십시오.
makefile에 대해 몇 가지 작업을 더 수행해 보겠습니다.
Makefile을 다음과 같이 업데이트합니다.
all: hello hello: main.o function1.o function2.o g++ main.o function1.o function2.o -o hello main.o: main.cpp g++ -c main.cpp function1.o: function1.cpp g++ -c function1.cpp function2.o: function2.cpp g++ -c function2.cpp clean: rm -rf *o hello
위 makefile에서 main.o, function1.o, function2.o라는 세 개의 객체를 생성했습니다. 또한 대상 main.o, function1.o 및 function2.o에 대한 종속성을 각각 main.cpp, function1.cpp 및 function2.cpp로 제공했습니다. 모든 대상은 그 안에서 지정된 작업을 수행합니다. 또한 모든 종속성을 정리하고 실행 파일을 제거하기 위해 정리 대상을 지정했습니다.
이제 make all 명령을 실행하여 새 makefile을 실행합니다.
make all
아래 출력을 고려하십시오.
위 출력에서 명령이 먼저 main.o, function1.o 및 function2.o를 각각 실행했음을 알 수 있습니다. 주어진 파일의 실행 파일과 개체 파일을 생성합니다. hello에서 지정하지 않았기 때문에 정리 대상을 실행하지 않습니다. 아래 파일을 고려하십시오.
make 명령에는 간단한 작업 프로세스가 있습니다. all 옵션을 실행하고 hello로 이동했습니다. hello를 실행한 후 지정된 순서로 대상을 읽습니다. 모든 대상과 해당 종속성을 검색하여 순서대로 실행했습니다.
개체와 실행 파일을 제거하려면 정리 작업을 수행합니다. 정리 작업을 수행하려면 다음과 같이 명령을 실행합니다.
make clean
아래 출력을 고려하십시오.
위 명령은 모든 개체와 실행 파일을 제거합니다. 아래 디렉토리 스냅을 참조하세요.
위 이미지에서 디렉토리를 정리했음을 알 수 있습니다.
make 명령의 변수
makefile에서 변수를 정의할 수 있습니다. 변수를 정의하려면 '=' 운영자. 예를 들어, 변수 A를 생성하고 여기에 gcc 명령을 할당하려면 다음과 같이 할당하세요.
VLC를 사용하여 YouTube 동영상 다운로드
A=g++
makefile에서 다음과 같이 사용하십시오.
hello: hello.cpp ${A} hello.cpp -o hello
다음과 같이 터미널에 전달됩니다.
g++ hello.cpp -o hello
${A} 대신 $(A)를 사용할 수 있습니다. 둘 다 스크립트에서 동일하게 처리되기 때문입니다.
makefile의 주석
makefile에 주석을 추가하려면 다음을 사용하십시오. '#' 상징. 예를 들어, 컴파일 섹션에 주석을 추가하려면 다음과 같이 추가하세요. '# 이렇게 하면 프로그램이 컴파일됩니다. .' 주석은 컴파일러에서 무시됩니다.