我是C新手
我用动态语言(javascript、python、haskell 等)编写了很多代码,但我现在正在为研究生院学习 C,但我不知道自己在做什么。
问题
最初,我使用 makefile 在一个目录中构建我的所有源代码,效果非常好。但是,我的项目正在增长,我想将源代码拆分为多个目录(单元测试、实用程序、核心等)。例如,我的目录树可能如下所示:
.
|-- src
| |-- foo.c
| |-- foo.h
| `-- main.c
`-- test
`-- test_foo.c
test/test_foo.c
同时使用src/foo.c
和src/foo.h
。使用makefile,构建它的最佳/标准方法是什么?最好有一条规则用于构建项目,一条规则用于构建测试。
笔记
我知道还有其他方法可以做到这一点,包括 autoconf 和其他自动解决方案。但是,我想了解正在发生的事情并能够从头开始编写 makefile,尽管它可能不切实际。
任何指导或提示将不胜感激。谢谢!
[编辑]
所以目前给出的三种解决方案如下:
- 将全局使用的头文件放在并行
include
目录中 - 使用状态中的路径,
#include
如#include "../src/foo.h"
- 使用
-I
开关通知编译器包含位置
到目前为止,我喜欢-I
switch 解决方案,因为它不涉及在目录结构更改时更改源代码。