为什么此makefile中没有编译标志?
我在makefile上读这篇文章。我发现我找不到编译器和编译标志的定义位置。通常,它们被定义为CXX和CFLAG 我为自己的测试项目复制了此生成文件:为什么此makefile中没有编译标志?,makefile,Makefile,我在makefile上读这篇文章。我发现我找不到编译器和编译标志的定义位置。通常,它们被定义为CXX和CFLAG 我为自己的测试项目复制了此生成文件: BUILD_DIR := /home/ubuntu/workspace/common/bin vpath %.cpp /home/ubuntu/workspace/common/src SRCS := basic_types.cpp OBJS := ${SRCS:%.cpp=${BUILD_DIR}/%.o} foo: ${OBJS}
BUILD_DIR := /home/ubuntu/workspace/common/bin
vpath %.cpp /home/ubuntu/workspace/common/src
SRCS := basic_types.cpp
OBJS := ${SRCS:%.cpp=${BUILD_DIR}/%.o}
foo: ${OBJS}
@echo Linking $@ using $?
@touch $@
${BUILD_DIR}/%.o: %.cpp # <-- I had thought there will be some more specific 'rules' here
@mkdir -p $(dir $@)
@echo Compiling $< ...
@touch $@
${SRCS}:
@echo Creating $@
@mkdir -p $(dir $@)
@touch $@
.PHONY: clean
BUILD_DIR:=/home/ubuntu/workspace/common/bin
vpath%.cpp/home/ubuntu/workspace/common/src
SRCS:=基本类型.cpp
OBJS:=${SRCS:%.cpp=${BUILD_DIR}/%.o}
foo:${OBJS}
@回显链接$@是否使用$?
@触碰$@
${BUILD_DIR}/%.o:%.cpp#您的问题有点不清楚,因为您为对象文件编写了一条规则,但实际上并不编译任何内容,但您说“它编译得很好”
有一条隐式规则的作用如下:
%.o: %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
CXX = g++
但是g++
已经是CXX
的默认值,似乎没有任何设置,但这本身不是问题。他们可能没有任何需要指定的内容,或者,因为他们超出了范围,他们可能只是没有费心将其包括在内。你真正的问题是什么?你的意思是你想要一个在GNUMake的隐式规则中使用的预定义变量列表,以及它们的默认值吗?谢谢大家。我已经重新调整了我的问题,但是这个makefile中没有CXX,对吗?你是说make隐式地将CXX放入规则中?make不会将CXX放入您编写的规则中。如果您为${BUILD_DIR}/%.o
编写了一个规则,并且希望它有一个调用编译器的命令,那么您必须自己将该命令放入规则中。