我正在为学校作业编写一个makefile,但我遇到了一些问题。我似乎无法使用-o标志将输出可执行文件命名为我想要的名称。相反,它正在创建一个名为a.out的可执行文件(它正常运行)。
当我使用" make clean"它告诉我,我想要的可执行文件名称不存在。我很担心" make"命令不识别程序名称和" make clean"命令是。任何反馈都将不胜感激。
PROGRAM = osuSystem
CXX = g++
CXXFLAGS = -std=c++0x
SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
HEADERS = $(wildcard *.hpp)
default: ${OBJECTS}
${CXX} ${CXXFLAGS} ${OBJECTS} ${HEADERS] ${SOURCES} -o ${PROGRAM}
clean:
rm ${OBJECTS} ${PROGRAM}
答案 0 :(得分:1)
您的default: ${OBJECTS}
行告诉make将所有资源编译成.o
个文件,因此下一行只需要链接.o
并且不应该提及源文件:
default: ${OBJECTS}
${CXX} ${CXXFLAGS} ${OBJECTS} -o ${PROGRAM}
我在本地重现了你的问题,这个改变让它发挥了作用。为了清洁,您应该使用rm -f
,这样它就不会抱怨并删除在您运行clean
时存在的那些,而某些要删除的对象/程序不存在。< / p>