![UNIX 사용자 정의 쉘 스크립트/명령](https://linux55.com/image/28371/UNIX%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%2F%EB%AA%85%EB%A0%B9.png)
저는 명령줄 인터페이스(Linux 등)에 익숙해지고 있는데 다음과 같은 명령을 발견했습니다.
자식 [명령어]
..예를 들어
자식 푸시
나는 (C++로 개발된) 프로젝트를 가지고 있는데 그것이 맞는지 알고 싶습니다.예다음과 같은 사용자 정의 명령을 생성할 수 있습니다.
(내 프로젝트가 "MyProject"라고 가정):
내 프로젝트가 컴파일됩니다.
그러면 어느 것이 gcc
컴파일 명령을 실행하게 될까요?
참고: "컴파일"과 같은 자체 명령을 만드는 것이 가능하다는 것을 알고 있지만 "참조"와 "명령"을 사용하여 명령을 만들고 싶습니다.
답변1
일단 익숙해지면 쉘 스크립팅보다 더 쉬운 방법은 다음을 사용하는 것입니다.만들다, 이전에 해당 참조를 본 적이 있을 것입니다.
매우 간단한 makefile은 다음과 같습니다:
myproject: myproject.cpp
g++ myproject.cpp -o myproject
지정하지 않으면 기본적으로 첫 번째 대상이 선택되며 make
, 이 경우 대상이 하나뿐이므로 거기에 보이는 대로 수행됩니다. 대상은 콜론 앞의 레이블(myproject)입니다. 콜론 뒤는 필수 대상입니다. 이러한 대상이 나열되지 않으면 파일로 간주됩니다. 이 경우 myproject 대상("myproject" 바이너리)의 출력 이후 myproject.cpp가 변경되지 않은 경우 make는 아무 작업도 수행하지 않습니다. 그렇다면 다시 컴파일됩니다.
상황이 더욱 복잡해짐에 따라 make 사용의 가치는 더욱 명확해집니다.
flags = -Wall -g -O2
myproject: myproject.h myproject.cpp somepart.o
g++ $(flags) somepart.o myproject.cpp -o myproject
somepart.o: somepart.h somepart.cpp
g++ $(flags) -c somepart.cpp -o somepart.o
.h 파일은 필수 구성 요소입니다. 파일을 변경하는 경우 해당 파일이 필요한 부분을 다시 컴파일해야 하기 때문입니다. 이제 make somepart.o
개체를 컴파일하거나 make
최신 "somepart.o"가 필요한 첫 번째 대상(myproject)을 사용할 수 있으므로 사용할 수 없는 경우 모든 항목도 만듭니다.
bash 스크립트를 사용하여 이 작업을 수행하는 것은 그리 쉽지 않습니다. 아마도 그 make
이유일 것입니다. 불행하게도 "요령을 익히는 것"에는 시간이 좀 걸릴 수 있습니다. l0b0은 다음 항목에 연결되었습니다.
http://www.gnu.org/software/make/manual/make.html
가장 먼저 주목해야 할 점은 make가 공백에 민감하다는 것입니다. 특히 공백 대신 실제 탭을 사용할 때 더욱 그렇습니다.
답변2
답변3
표준 명령을 유지하는 것이 좋습니다. 즉, make
프로젝트 등을 컴파일합니다. 공동작업자가 인수하기가 더 쉽습니다.많은설정이 더 쉽고 무작위로 기억해야 할 항목이 줄어듭니다(또는 다음 시스템/프로젝트에 설정). 당신이 작업하게 될 대부분의 프로젝트는 당신 자신의 것이 아니며, 그 머신을 패치로 유지하는 것은 많은 문제를 야기할 것입니다.