【发布时间】:2009-02-28 15:37:14
【问题描述】:
我是 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 解决方案,因为它不涉及在目录结构更改时更改源代码。
【问题讨论】:
-
+1 用于 -I 开关,这是最灵活的方式。顺便说一下,将公共头文件放在专用的包含目录中没有问题(任何方式都是好的做法)并使用 -I 提供该目录的路径(灵活性)。
标签: c makefile header-files