在gnu make文件中包含被忽略的路径

jrm*_*jrm 2 makefile gnu-make

makefile包含在下面.它只是一个很长的目标文件列表和两个目标.问题似乎是第一个目标忽略了$(INC).例如,输出以"g ++ -c -o main.o main.cpp"而不是"g ++ -I/usr/home/jrm/tmp/proteus_beta -c -o main.o main.cpp"开头.

TIA

PROG = proteus

# list of object files
OBJS = main.o \
dataset.o \
genetic_codes.o \
likelihood_engine.o \
options.o \
parsimony.o \
parsimony_engine.o \
seq.o \
site_collection.o \
site_pattern.o \
tools.o \
optare/crs.o \
optare/point.o \
optare/newton_1d.o \
optare/golden_section.o \
models/model.o \
models/DNA/DNA_model.o \
models/DNA/DNA_ssm.o \
models/CODON/CODON_model.o \
models/CODON/CODON_modelA.o \
models/CODON/CODON_modelB.o \
models/CODON/CODON_modelC.o \
models/CODON/CODON_modelD.o \
models/CODON/CODON_M0.o \
models/CODON/CODON_M1.o \
models/CODON/CODON_M2.o \
models/CODON/CODON_M3.o \
models/CODON/CODON_M0gtr.o \
models/CODON/CODON_FEBC1.o \
models/CODON/CODON_FEBC1b.o \
models/CODON/FESC/CODON_FESC1.o \
models/CODON/CODON_nh/CODON_M0nh1.0 \
models/CODON/CODON_nh/CODON_M1nh1.0 \
models/CODON/CODON_nh/CODON_M1nh1.0 \
models/CODON/CODON_nh/CODON_M3nh1.0 \
models/CODON/CODON_nh/CODON_M0nh2.0 \
models/CODON/CODON_nh/CODON_MmodelAnh2.0 \
matrices/matrix.o \
matrices/DNA_matrix.o \
matrices/CODON_matrix.o \
matrices/AA_matrix.o \
matrices/int_matrix.o \
matrices/str_matrix.o \
matrices/eigen.o \
incidere/slice_sampler.o \
dendrology/forestry.o \
dendrology/node.o \
dendrology/DNA_node.o \
dendrology/tree.o \
alphabetia/alphabet.o \
alphabetia/DNA_alphabet.o \
alphabetia/CODON_alphabet.o \
alphabetia/AA_alphabet.o

CC = g++

INC=-I/home/jrm/tmp/proteus_beta

.C.o:
 $(CC) $< -c $(INC)

$(PROG): $(OBJS)
 $(CC) -o $@ $(OBJS) -lm
Run Code Online (Sandbox Code Playgroud)

Dan*_*her 5

根据你的帖子,你有一个名为的文件main.cpp,而不是一个名为的文件main.C.但是,您提供了将.C文件转换为的隐式规则.o.Make将main.cpp使用其内置规则进行编译以.cpp进行.o编译.您有两种选择可以做您想做的事情:

(1)将隐式规则更改为.cpp.o(并考虑使用新式规则,即%.cpp: %.o)

(2)声明一个CXXFLAGS变量(自动包含在Make的C++编译隐式规则中),如下所示:

CXXFLAGS = $(INC)
Run Code Online (Sandbox Code Playgroud)

然后删除.C.o隐式规则.

第二个选项将简化您的makefile,它将与C++文件一起使用,无论扩展名如何.