GNU Make를 사용하여 유사한 규칙으로 실행 파일 빌드
Scons의 대안으로 GNU Make는 작업에 효율적인 솔루션이 될 수 있습니다. GNU Make를 사용하면 종속성 해결 시스템을 통해 유연한 빌드 프로세스를 정의할 수 있습니다.
GNU Make 접근 방식
위에서 빌드하고 정리할 수 있는 두 개의 makefile을 제공합니다. -레벨 디렉터리(all_lessons) 및 개별 프로젝트 디렉터리:
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))
장점
사용
개별적으로 빌드하려면 프로젝트 디렉토리에서 해당 디렉토리에 Makefile로 project.mk에 대한 심볼릭 링크를 만듭니다. all_lessons 디렉토리에서 빌드하거나 정리하면 모든 프로젝트가 처리되지만, 프로젝트 디렉토리에서 빌드하거나 정리하면 해당 프로젝트에만 영향을 미칩니다.
이 접근 방식은 다양한 디렉토리에서 유사한 규칙을 사용하여 여러 실행 파일을 빌드하는 깔끔하고 유연한 방법을 제공합니다.
위 내용은 GNU Make를 사용하여 서로 다른 디렉토리의 유사한 규칙을 사용하여 여러 실행 파일을 효율적으로 빌드할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!