我认为按如下方式组织我的项目:
我的项目
|--src
|--包括
|--测试
核心文件驻留在目录 src 和 include 中,而核心的不同测试应用程序位于 test 目录中(多个 *.c 包含每个 main() 函数)。核心应该构建为静态库,它将链接到所有应用程序)。
如何编写一个基本的 Makefile 来满足这些要求?我已经用谷歌搜索并发现以下网站提供了用于构建可执行文件的 Makefile 模板 1 。如何扩展此 Makefile 以满足我的需要?
如果您认为我的项目组织不好或者您有更好的想法,请告诉我!
感谢任何帮助!
谢谢,乔纳斯
最佳答案
你还没有说你想要库去哪里,所以我假设它应该进入对象已经所在的src/
。
src/libcore.a: $(OBJECTS)
$(AR) -cvq $@ $^
看起来您的 makefile 将从 test/testfoo.c
构建 test/testfoo.o
,所以我假设这是可行的。而且您还没有说要将可执行测试(例如 testfoo
)放在哪里,所以我将它们放在 test/
中。
test/%: test/%.o src/libcore.a
$(CC) -o $@ $< -Lsrc -lcore
编辑:
如果您希望 Make 默认构建所有测试,那么您应该在 makefile 中的任何其他规则之前添加此规则:
TESTS := $(patsubst %.c,%,$(wildcard test/*.c))
all: $(TESTS)
关于c - 用于构建链接先前构建的库的多个应用程序的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029103/