Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译.h文件_C++_Makefile - Fatal编程技术网

C++ 编译.h文件

C++ 编译.h文件,c++,makefile,C++,Makefile,如何在我的makefile中包含对自己的“.h”文件的重新编译/更新 这是我的生成文件: COMPILER = g++ SOURCES = main.cpp APP = executable/main OBJECTS = $(SOURCES:.cpp=.o) all: $(SOURCES) $(APP) $(APP): $(OBJECTS) $(COMPILER) $(OBJECTS) -o $@ clean: rm -rf *.o $(APP) 假设现在我想重新

如何在我的makefile中包含对自己的“.h”文件的重新编译/更新

这是我的生成文件:

COMPILER = g++
SOURCES =  main.cpp 
APP = executable/main

OBJECTS = $(SOURCES:.cpp=.o)

all: $(SOURCES) $(APP) 

$(APP): $(OBJECTS)
    $(COMPILER) $(OBJECTS) -o $@

clean:
    rm -rf *.o $(APP)

假设现在我想重新编译这个项目,但我只是修改了whatever.h和whatever1.h。这些文件包含在main.cpp的标题中。

在应用程序依赖项列表中添加标题文件:

COMPILER = g++
SOURCES =  main.cpp
HEADERS = whatever.h whatever1.h
APP = executable/main

OBJECTS = $(SOURCES:.cpp=.o)

all: $(SOURCES) $(APP) 

$(APP): $(OBJECTS) $(HEADERS)
    $(COMPILER) $(OBJECTS) -o $@

clean:
    rm -rf *.o $(APP)
将这些文件添加到
$(APP)
的依赖项列表中没有任何好处。这将导致Make重新链接(即,从
main.o
中生成
main
),但不会重新编译(即,从
main.cpp
中生成
main.o
whatever.h
)。可执行文件的行为不会改变——它不会反映您对头文件所做的更改

应将这些文件添加到目标文件的先决条件列表中:


在源文件和头文件之间添加相关性。makeDependen(来自包imake)可以为您完成这项工作。此外,您可以向C编译器传递命令行选项以生成依赖项文件。你应该!在makefile中包含这个文件。@harper:是的,但这是一种高级技术;OP显然是个新手。
main.o: whatever.h whatever1.h