これは私の非常に最初の Makefile であり、Web で見つけたがらくたをカット アンド ペーストしました。私のディレクトリ構造はかなりフラットで、Makefile について考えられていませんでした。それは: Project/ Project/Control Project/NodeMgmt Project/Common Project/Interfaces
Control の Makefile を作成していますが、Control 内でスタンドアロンにしたいと考えています。Common & Interfaces からコンパイルしてインクルードする必要があります。ここに私のメイクファイルがあります:
CC = g++
CFLAGS = -Wall -c
INCLUDES = -I/usr/local/include -I/SuperCool/Ion-1.0.0-snapshot-1/include -I/SuperCool/FastrakSDK-4.0.1-snapshot-1/include/Fastrak/Engine/Core/CoreIpc -I/Projects/Common -I/Projects/Interfaces -I/Projects/NodeMgmt -I/Projects/Controller
LFLAGS = -L/usr/local/lib -L/SuperCool/FastrakSDK-4.0.1-snapshot-1/lib
LIBS = -lCoreIpc4 -lIonOs
VPATH = ../Interfaces/
VPATH = ../Common/
VPATH = ../NodeMgmt/
SRCS = *.cc
OBJS = $(SRCS:.cc=.o)
MAIN = controller
.PHONY: clean
all: $(MAIN)
@echo Built Controller
$(MAIN): $(OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $(MAIN) $(OBJS) $(LFLAGS) $(LIBS)
.cc.o:
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
clean:
$(RM) *.o $(MAIN)
「-c Controller.cc -o *.o」を見つけた最初の.ccファイルをコンパイルしていますが、これは意味がありますが、コンパイルするのはそれだけで、Controller.oファイルではなく*.o出力ファイルを取得します。他のファイルはコンパイルしません。