메이크파일을 분할하고 별도의 파일에서 대상 가져오기
6156 단어 makefilemakeautocomplete
메이크파일 시작
일부 작업이
Makefile
로 관리되는 프로젝트의 시작을 상상해 보십시오. 프로젝트 초기에는 작업이 2~3개일 수 있습니다. 다음 몇 줄과 유사한 Makefile을 상상해 보십시오.install:
@echo "some install stuff"
build:
@echo "some build stuff"
기능 추가
그런 다음 프로젝트가 성장하고 작업 수도 증가한다고 상상해보십시오. 테스트를 실행하기 위한 몇 가지 작업. 데이터베이스에 고정물을 삭제, 초기화, 생성, 마이그레이션 또는 추가하는 다른 것. 등등 ...
install:
@echo "some stuff"
build:
@echo "some other stuff"
test:
@echo "some unit test"
e2e:
@echo "some end 2 end stuff"
fixtures:
@echo "fixtures"
init-db:
@echo "database, ..."
erase:
@echo "clear cache, containers and other stuffs"
some-docker-task:
@echo "do something"
some-other-task:
@echo "leave a comment"
some-other-task:
@echo "please click on Hear or Unicorn"
내 말은, ... 메이크파일을 깨끗하고 읽기 쉽게 유지하거나 시도하기 위해 아무 조치도 취하지 않으면 메이크파일이 곧 폭발할 수 있다는 것입니다. .. 건초! 메이크파일을 분할할 수 있습니까? 음 아니, .. 올바른 질문입니다.
다른 소스에서 명령을 가져올 수 있습니까?
예! 그리고 사용할 키워드는 "include"입니다. 좋아요, .. 기사의 나머지 부분에서 저를 따라오세요. 일부 작업을 다른 세트로 분할해 보세요. 예를 들어 다음 작업 집합을 가질 수 있습니다.
가상 파일은 다음과 유사할 수 있습니다.
tests-unit:
echo @"do something"
test-e2e:
echo @"do something"
test-functional:
echo @"do something"
docker-build:
echo @"do something"
docker-up:
echo @"do something"
docker-stop:
echo @"do something"
좋아, 이것은 그렇게 크지는 않지만 수십 개의 세트를 상상해보십시오. makefile에 실제로 포함될 수 있습니다. 수백 줄의 makefile을 상상해 보십시오. 나는 읽기가 그렇게 쉬울 수 없다고 확신합니다.
하나의 Makefile 분할
이제
test.file
및 docker.file
두 파일을 상상해 보십시오.docker.file
다음을 포함할 수 있음docker-build:
echo @"do something"
docker-up:
echo @"do something"
docker-stop:
echo @"do something"
및
test.file
포함할 수 있음tests-unit:
echo @"do something"
test-e2e:
echo @"do something"
test-functional:
echo @"do something"
메인 Makefile 내부에 포함한다고 상상해 보십시오.
include test.file docker.file
이제 간단하게 실행할 수 있으며
make test-unit
작동합니다. 하지만자동 완성 실패
모든 대상이 Makefile 안에 있을 때마다 자동 완성이 작동합니다. 대상을 외부로 이동하면 작동이 중지됩니다. Makefile 문제는 아니지만 자동 완성 문제입니다. oh-my-zsh를 사용하고 있습니다. 플러그인이 필요할 수도 있습니다. 모르겠어요. 이 문제를 해결하는 방법을 알고 계셨습니까?
자동 완성 수정
자동 완성을 수정하는 약간의 트릭을 찾았습니다. 가져온 파일 내에서 대상을 호출하는 새 대상으로 Makefile을 업데이트했습니다. 작동합니다!!! 이제
make<tab>
는 unit-test
도 보여줍니다.include test.file docker.file
unit-test: test-unit
결론
makefile을 순서대로 유지하고 깨끗하게 유지하는 것이 좋습니다. 그러나 잃어버린 자동 완성은 그리 좋지 않습니다. 당신이 모든 목표를 알고 있다면 괜찮습니다. 그러나 자동 완성 기능이 없으면 새로운 팀원이 포함된 파일에서 올바른 명령을 찾기 어려울 수 있습니다. 하지만 ... 이것은 고칠 수 있습니다. 그래서... 저는 메이크파일의 이 멋진 기능에 만족합니다.
Reference
이 문제에 관하여(메이크파일을 분할하고 별도의 파일에서 대상 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sensorario/how-split-makefile-and-keep-targets-in-separate-files-2pp6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)