生成文件不会生成预期的文件输出

Makefile does not produce the expected file output

本文关键字:文件 输出      更新时间:2023-10-16

我有以下Makefile,我主要从不同的Makefile复制并略有调整。 出于某种原因,它正在做一些非常奇怪的事情:
1(当我运行make时,我没有得到可执行文件">执行",而是我得到了a.out,我不知道为什么。
2(当我背靠背制作时,我不会得到"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

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

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

尽管我会说execute对于可执行文件来说可能是一个非常糟糕的名字。