我对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*
答案 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会注意到目标文件已过期。