如何在不删除.o文件的情况下使用makefile进行编译

How to compile with a makefile without deleting .o files?

本文关键字:makefile 编译 情况下 删除 文件      更新时间:2023-10-16

我对makefile一点经验都没有,但我设法让自己的工作正常。然而,当我修改一个文件并希望重新编译新版本时,我刚刚注意到我需要删除之前生成的de.o文件来进行新的编译(否则,我被告知什么都做不了)。

是否有任何选项可以添加到makefile中,使其用新文件替换旧的.o(仅当它是旧版本时)?或者,至少,这就是我认为我的解决方案

提前感谢

Eduardo

PD:这是我的Makefile,以备不时之需。

todo: Sensor Control Lista
#Ficheros de los que depende
Sensor: Sensor.o semaforo.o memocomp.o colamsg.o
    #Cómo crea esos ficheros
    g++ Sensor.o semaforo.o memocomp.o colamsg.o -o Sensor -lrt -lpthread
Control: Control.o semaforo.o memocomp.o colamsg.o
    g++ Control.o semaforo.o memocomp.o colamsg.o -o Control -lrt -lpthread
Lista: Lista.o semaforo.o memocomp.o colamsg.o
    g++ Lista.o semaforo.o memocomp.o colamsg.o -o Lista -lrt -lpthread
#Compilación de cada uno de esos ficheros
Sensor.o: Sensor.cpp semaforo.hpp memocomp.hpp colamsg.hpp
    g++ -c Sensor.cpp
Control.o: Control.cpp semaforo.hpp memocomp.hpp colamsg.hpp
    g++ -c Control.cpp
Lista.o: Lista.cpp semaforo.hpp memocomp.hpp colamsg.hpp
    g++ -c Lista.cpp
semaforo.o: semaforo.cpp semaforo.hpp
    g++ -c semaforo.cpp
memocomp.o: memocomp.cpp memocomp.hpp
    g++ -c memocomp.cpp
colamsg.o: colamsg.cpp colamsg.hpp
    g++ -c colamsg.cpp

#Elimina los ficheros creados previamente por el usuario ****
clean:
    rm /dev/shm/sem.1207*
    rm /dev/shm/1207*
    rm /dev/mqueue/1207*
Usage: make [options] [target] ...
Options:
  -b, -m                      Ignored for compatibility.
  -B, --always-make           Unconditionally make all targets.
...etc
colamsg.o: colamsg.cpp colamsg.hpp
^target    ^dependencies

只要列出了每个目标的所有依赖项,就不必执行任何操作

Make将注意到对象文件已过期。