我对 GNU makefile 的了解有限,目前这让我很失望。
我有一个类声明文件:mdfTree.h,一个类 mdfTree.cpp 的实现,以及一个 mdfTree_x.cpp 文件,其中我创建了一个 mdfTree 类的对象并调用它的公共函数,然后调用一些私有成员mdfTree 的变量。
我正在用 Makefile 编译它:
CXX=g++
CXXFLAGS=-g -Wall -W -Wconversion -Wshadow -Wcast-qual -Wwrite-strings $(shell root-config --cflags --gl\
ibs)
LDFLAGS=-g $(shell root-config --ldflags)
LDLIBS=$(shell root-config --libs)
mdfTree_x: mdfTree_x.o
g++ $(LDFLAGS) -o mdfTree_x mdfTree_x.o $(LDLIBS)
mdfTree_x.o: mdfTree_x.cpp
g++ $(LDFLAGS) $(CXXFLAGS) -c mdfTree_x.cpp
mdfTree.cpp 和 mdfTree_x.cpp 中有一个#include mdfTree.h
。mdfTree_x.cpp 也需要#include mdfTree.cpp
吗?
我认为我的 Makefile 是错误的,因为当我尝试编译时,来自类 mdfTree 的公共函数看不到同一类的私有变量。此外,当我在 mdfTree.h 中插入语法错误时,编译器不会选择它。如何告诉 Makefile mdfTree_x 需要使用/编译 mdfTree.h/.cpp?