Makefile不会产生预期的文件输出

时间:2017-11-10 22:38:10

标签: c++ makefile

我有以下Makefile,我主要从不同的Makefile复制并略微调整。出于某种原因,它做了一些非常奇怪的事情:
1)当我运行make时,我没有得到可执行文件' 执行'相反,我出去了 a.out ,我不明白为什么 2)我没有回复 a' make:当我制作它时,没有什么可以为'all'。' 做背靠背(暗示没有任何改变因此它不需要更新,因此我认为Makefile的目的)。如果我背对背,我得到

    g++ stern_sim.o mag_cur_loop.o thetaddotMotion.o

我认为它仍然试图更新它。每次我最终都会使用 a.out 而不是执行。无论如何,所以对这两个问题的帮助会很棒。此外,所有缩进都使用选项卡,没有空格(我加倍和三重检查)。

CC= g++
CFLAGS= -c -Wall -lm -std=c++0x
SHELL:=/bin/bash

all: execute

execute: stern_sim.o mag_cur_loop.o thetaddotMotion.o
        $(CC) stern_sim.o mag_cur_loop.o thetaddotMotion.o

stern_sim.o: stern_sim.cpp
        $(CC) $(CFLAGS) stern_sim.cpp

mag_cur_loop.o: mag_cur_loop.cpp
        $(CC) $(CFLAGS) mag_cur_loop.cpp

thetaddotMotion.o: thetaddotMotion.cpp
        $(CC) $(CFLAGS) thetaddotMotion.cpp

clean:
        rm -rf *.o execute

1 个答案:

答案 0 :(得分:2)

a.out是由于历史原因,在类似unix的平台上由C和C ++生成的可执行文件的默认名称。如果要将可执行文件调用为其他内容,则需要使用-o链接器选项:

$(CC) stern_sim.o mag_cur_loop.o thetaddotMotion.o -o execute

虽然我会说execute可能是一个非常糟糕的可执行文件名称。