GNU Make를 사용하여 유사한 규칙으로 여러 실행 파일 빌드
질문:
GNU Make를 만들 수 있나요? 디렉토리 구조에서 유사한 규칙을 사용하여 여러 실행 파일을 구축하는 것을 용이하게 하여 기본 디렉토리와 개별 프로젝트 디렉토리 모두에서 컴파일할 수 있습니까?
답변:
예, GNU Make는 처리할 수 있습니다. 간결하고 효율적인 접근 방식으로 이 작업을 수행합니다. 다음은 원하는 기능을 구현하는 두 개의 makefile입니다:
project.mk:
all : % : forward_ # build any target by forwarding to the main makefile $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@ .PHONY : forward_
Makefile:
# one directory per project, one executable per directory project_dirs := $(shell find * -maxdepth 0 -type d ) # executables are named after its directory and go into the same directory exes := $(foreach dir,${project_dirs},${dir}/${dir}) all : ${exes} # the rules .SECONDEXPANSION: objects = $(patsubst %.cpp,%.o,$(wildcard $(dir )*.cpp)) # link ${exes} : % : $$(call objects,$$*) Makefile g++ -o $@ $(filter-out Makefile,$^) ${LDFLAGS} ${LDLIBS} # compile .o and generate dependencies %.o : %.cpp Makefile g++ -c -o $@ -Wall -Wextra ${CPPFLAGS} ${CXXFLAGS} -MD -MP -MF ${@:.o=.d} $< .PHONY: clean clean : rm -f $(foreach exe,${exes},$(call objects,${exe})) $(foreach dir,${project_dirs},$(wildcard ${dir}/*.d)) ${exes} # include auto-generated dependency files -include $(foreach dir,${project_dirs},$(wildcard ${dir}/*.d))
사용법:
장점:
위 내용은 GNU Make는 디렉토리 구조 전반에 걸쳐 유사한 규칙을 사용하여 수많은 실행 파일을 효율적으로 빌드하여 기본 디렉토리와 개별 프로젝트 폴더 모두에서 컴파일할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!