如何使用makefile编译而不删除.o文件?

时间:2015-12-07 15:39:27

标签: c++ linux unix makefile

我对makefile没有任何经验,但我设法让我的工作。 但是,当我修改文件并希望新版本再次编译时,我只是注意到我需要删除之前生成的de .o文件以进行新的编译(其他的,我被告知无法完成任何操作)

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

提前致谢,

爱德华

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*

2 个答案:

答案 0 :(得分:1)

Usage: make [options] [target] ...
Options:
  -b, -m                      Ignored for compatibility.
  -B, --always-make           Unconditionally make all targets.
...etc

答案 1 :(得分:0)

colamsg.o: colamsg.cpp colamsg.hpp
^target    ^dependencies

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

Make会注意到目标文件已过期。