代码之家  ›  专栏  ›  技术社区  ›  Drawkcab Esrever

对makefile无法识别的文件所做的更改

  •  1
  • Drawkcab Esrever  · 技术社区  · 6 年前

    因为我的make file每次都是这样写的,我对一个文件做一个更改,然后像没有做任何更改一样“做”它。例如。。。。。。。。

    当我更改unit.cpp然后“make”时,我收到此消息

    Make:对“所有人”都不做任何事。

    目前,我必须做'使干净',然后'使'才能识别的变化。我知道这可能是一个愚蠢的方式做事情,我想知道我如何可以修改我的make文件,这样我就不需要重新编译所有的文件,每次我作出改变。

    #makefile
    # \ for line break
    # this is variable for which compiler to use
    CC = g++
    CFLAGS = -c -Wall 
    OBJFILES = main.o UnitList.o Unit.o  Write.o
    # this is the name of target program
    TARGET = run
    
    all: $(TARGET) 
    
    $(TARGET): $(OBJFILES)
        $(CC) $(OBJFILES) -o $(TARGET)
    
    main.o:
        $(CC) $(CFLAGS) main.cpp
    
    UnitList.o: 
        $(CC) $(CFLAGS) UnitList.cpp 
    
    Unit.o:
        $(CC) $(CFLAGS) Unit.cpp
    
    Write.o:
        $(CC) $(CFLAGS) Write.cpp
    
    clean:
        rm -f $(OBJFILES) $(TARGET)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Stack Exchange Supports Israel    6 年前

    您需要列出makefile中的所有依赖项。

    例如,这:

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

    应该在依赖项列表中包含main.cpp:

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

    然后,当您更改main.cpp时,make knows将重新生成main.o。