我有一个关于 makefile 依赖项的概念性问题,这是因为我在网上看到了关于此的不一致。
假设我有以下文件:
main.cpp uses-> my_math.cpp and my_strings.cpp
my_math.cpp uses-> my_math.h
my_strings.cpp uses-> my_strings.h
Run Code Online (Sandbox Code Playgroud)
如果我有一个 makefile,一般支出为:
program: $(all_objs)
g++ $(all_objs) -o program
main.o: ...
.......
my_math.o: ...
.......
my_strings.o: ...
.......
Run Code Online (Sandbox Code Playgroud)
我不知道每个依赖项应该包含什么。比如,math.o #includes my_math.h 和 my_strings.h,这是否意味着如果我更改 my_math.h,main.cpp 需要重新编译?但为什么?它像图书馆一样使用它,对吧?它不需要重新编译 main.cpp 或者是吗?
如,main.o 的结果应该是:
1) main.o: main.cpp
gcc -c main.cpp
2) main.o: main.cpp my_strings.cpp my_strings.h my_math.cpp my_math.h
gcc -c main.cpp
3) main.o: main.cpp my_strings.cpp my_strings.h my_math.cpp my_math.h
gcc -c main.cpp my_strings.cpp my_math.cpp
Run Code Online (Sandbox Code Playgroud)
我对依赖项和链接的工作方式有点迷失。
任何帮助,将不胜感激!谢谢!