원문 캡처 · wanderinghorse.net
원문 캡처 · wanderinghorse.net

GNU Make 사용 자료 페이지가 O'Reilly의 《Managing Projects with GNU Make》 3판을 재구성한 PDF·ODT 파일과 예제 코드를 제공한다. 같은 페이지에는 소규모 C/C++ 프로젝트의 빌드를 돕는 Makefile 도구 ShakeNMake도 소개돼 있다.

GNU Make 안내서와 자료

페이지 운영자는 출판사가 책을 22개의 PDF로 나눠 제공해 활용과 개작이 어렵다며, 책의 색인과 현재는 관련 없는 한 섹션을 제외한 전체 내용, 출판된 정오표, 문서 내부 상호 참조를 포함한 OpenDocument 형식의 사본을 만들었다고 설명한다. GNU Free Documentation License에 따라 전자책을 이용할 수 있으며, 책과 함께 공식 GNU Make 설명서도 참고 자료로 안내한다.

GNU Make에 관한 개요는 위키백과의 Make 문서에서도 볼 수 있다.

ShakeNMake

ShakeNMake는 단일 디렉터리로 구성된 소규모·일회성·실험용 프로젝트에서 configure와 make 과정을 대신하도록 만든 보조 Makefile이다. GNU 도구인 gcc, GNU 링커, bash, GNU sed를 사용하는 환경을 대상으로 하며, Cygwin에서는 제한적인 테스트만 거쳤다.

사용하려면 shake-n-make.make를 프로젝트 디렉터리에 복사하고 다음 내용을 Makefile에 넣는다.

#!/usr/bin/make
default: all
#PACKAGE.NAME = MyPackage
#PACKAGE.VERSION = 1.2.3
# ^^^^ the PACKAGE vars are not needed since the removal
# of the long-unused 'dist' and doxygen-related rules.
# In practice they were simply never used.
include shake-n-make.make
# ... the rest of your code goes here ...

C/C++ 소스 컴파일과 파일별 컴파일 옵션, 실행 파일과 공유·정적 라이브러리 빌드, 의존성 자동 생성, 소스 트리 정리를 지원한다. 배포 파일 생성, 설치·제거, Doxygen 문서 생성 규칙은 사용되지 않아 2019년 이전 버전에서 제거됐다.

페이지는 ShakeNMake의 전체 기능 설명을 shake-n-make.make 안의 문서에서 확인하도록 안내한다. 2019년판 데모 프로젝트는 최신 컴파일러 요구사항에 맞게 갱신됐지만 오래된 설치·제거, 배포 파일, Doxygen 규칙은 빠져 있다. 2007년판 데모 프로젝트는 최신 컴파일러에서 -fPIC 옵션이 필요한 경우 빌드되지 않을 수 있다.

부록: 원문 예시

원문에 실린 예시 1

text
# Dynamic library:
myLibrary.DLL.OBJECTS = foo.o bar.o
$(myLibrary.DLL.OBJECTS): CFLAGS+=-fPIC
myLibrary.LDFLAGS = -L/some/path -lmyOtherLib
$(call ShakeNMake.CALL.RULES.DLLS,myLibrary)

# Static library:
myLibrary.LIB.OBJECTS = $(myLibrary.DLL.OBJECTS)
$(call ShakeNMake.CALL.RULES.LIBS,myLibrary)

# Add the libs to the 'all' target:
all: myLibrary.LIB myLibrary.DLL
# Note that myLibrary.LIB and myLibrary.DLL are names of TARGETS, not FILES.
# If you want the FILE names, use $(myLibrary.LIB) and $(myLibrary.DLL).