디렉토리의 모든 소스 파일을 자동으로 생성하는 메커니즘을 요구하고 있다는 것을 알고 있습니다 만, 나는 그 접근법을 싫어합니다. 미래의 어떤 시점에서 개별 테스트 또는 두 개를 사용할 수 없도록 설정해야합니다. 그러면 파일 이름을 다시 지정하면 자동으로 컴파일되지 않습니다.
나는 당신이 Makefile
에 건물을 만들려는 모든 프로그램을 나열하는 것을 선호하지만, 그것은 끔찍할 필요가 없습니다. suffix rules을 사용하면 모든 .c
파일을 .o
개의 파일이나 직접 실행 파일에 빌드 할 수 있습니다.
다음은 AppArmor 회귀 테스트 스위트의 스 니펫입니다.이 스 니펫은 일반적으로 이러한 유형의 것으로 보입니다. (나는 몇 년있다, 나는 모든 관련 비트를 복사 희망 .)
SRC=access.c \
changeprofile.c \
changehat.c \
changehat_fork.c \
changehat_misc.c \
....
unlink.c \
xattrs.c
...
#only do the ioperm/iopl tests for x86 derived architectures
ifneq (,$(findstring $(shell uname -i),i386 i486 i586 i686 x86 x86_64))
SRC+=syscall_ioperm.c syscall_iopl.c
endif
...
LIBIMMUNIX:=$(shell if [ -f /usr/lib/libapparmor.so -o -f /usr/lib64/libapparmor.so ] ; then \
echo -lapparmor ; \
elif [ -f /lib/libimmunix.so.1 -o -f /lib64/libimmunix.so ] ; then \
echo -limmunix ; \
fi)
CFLAGS+=$(CHANGEHAT_FLAGS) -Wall -Wstrict-prototypes
LDLIBS+=$(LIBIMMUNIX)
EXEC=$(SRC:%.c=%)
...
all: $(EXEC) changehat.h
그냥 디렉토리에 새 파일을 삭제만큼 쉬운 일이 아닙니다; Makefile
에 추가해야합니다. 그러나 한 줄에 한 번만 이름을 추가하면 좋을 것입니다. 사용을 중지하려면 문제가되는 행을 주석으로 처리하십시오. 거의이므로 빌드 프로세스를 쉽고 효율적으로 제어 할 수 있습니다.
이것은 훨씬 더 의미가 있으며 유연성 (이전/베타 테스트가 필요하거나 제거 될 때까지 저장)을 고맙게 생각합니다. 어떻게 진행되는지, 감사합니다! –