我是makefiles的新手
有很多选择可供探索。我刚刚尝试过简单的makefile,它涉及在同一个位置编译.c
文件及其相应的.h
文件,但我有一个编译大型项目的问题只是为了观察它的输出。
结构如下:
对于项目1:
/maindirectory/project1/include/.h files
/maindirectory/project1/source/.c files
/maindirectory/project1/sharedlibrary/.so files
对于项目2:
/maindirectory/project2/include/.h files
/maindirectory/project2/source/.c files
/maindirectory/project2/sharedlibrary/ .so files
现在有一个"测试" .c
文件以某种方式测试在这些项目中声明的某些代码的功能。
现在我知道这个测试文件应该放在/maindirectory/test.c
以及整个项目目录1和2中,并创建一个makefile
来构建所有必需的依赖项。
test.c
文件#include
项目1和项目2中的一些源.c
文件,同时它还引用项目2中的.h
文件。我也注意到它抛出一些&#34;未定义的<function_name>
&#34;并且此函数名称在.h
文件上没有实现,因此我假设其实现属于共享库文件。
我需要帮助/指导/了解如何通过makefile
将所有这些组合在一起,而无需探索数千行文件,只是为了了解整个结构?
答案 0 :(得分:2)
[...]我如何通过
makefile
将所有这些组合在一起,而无需探索数千行的大量文件,只是为了了解整个结构?
gcc(或更准确的预处理器)提供-M
选项来列出依赖项。
-M
输出适用于描述主源文件依赖关系的
make
的规则,而不是输出预处理的结果。预处理器输出一个make
规则,其中包含该源文件的目标文件名,冒号以及所有包含文件的名称,包括来自-include
或-imacros
命令行的文件选项。