这是在 C 中,我通过 Putty 运行 UNIX 并且想要创建一个 Makefile。
所以我有一个程序只在一个文件“recommender.c”中,我需要制作一个 makefile,使用 all 函数创建一个名为 recommender 的可执行文件。我不知道该怎么做的部分是我使用 gcc recommender.c -std=gnu99 行编译 recommender.c 我不知道如何确保它也执行 -std=gun99 部分。请帮忙? :)
最佳答案
CFLAGS=-std=gnu99 -Wall -Wextra -O3
all: recommender
recommender: recommender.o
请注意,文件扩展名必须是 .c
如果它具有扩展名 .cpp
则需要 CXXFLAGS
而不是 CFLAGS
一些解释:
make 文件是基于依赖关系的,如您所见,您可以在 make 文件之上设置变量。然后当调用 make 程序时,它将在当前目录中搜索 Makefile
。
由于默认操作是 all
它将搜索 all 规则。
当它找到 all
规则时,它将检查在这种情况下需要哪些依赖项 recommender
规则/文件,因此它再次开始搜索规则并发现它需要 recommender.o
规则/文件,但它找不到任何东西,现在神奇的地方就在这里。
make
足够聪明,知道 .o(目标)文件是从 .c 或 .cpp(源)文件生成的,所以现在它将开始在当前目录中搜索源文件目录。他通过用 .c
替换 .o
来做到这一点,如果它找到文件,它将使用 gcc 编译器编译它,如果它在哪里可以找到 .cpp
文件,它将使用 g++ 编译器编译它。
现在我们知道了这一点,我们可以通过添加更多目标文件作为依赖项来简单地将多个源文件添加到项目中。
现在你真的不需要首先创建一个目标文件,因为你是从一个源文件编译的,你也可以删除 recommender: recommender.o
规则,make 将尝试创建 recommender
应用通过编译recommender.c
或.cpp
关于有人可以告诉我如何创建这个非常简单的 makefile 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6024679/