相关疑难解决方法(0)

如何编写Makefile来编译一个简单的C程序

编译以下程序

#include <stdio.h>
int main(void)
{
   printf ("Hello from your first program!\n");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

a)-by使用Makefile类型的文件

b) - 可执行文件将命名为Hello

"请帮忙做一个练习.我知道如何在CodeBlocks中做到这一点,但我不知道Makefile是什么以及如何在Linux中编写它.我使用命令"gcc filename.c"编译它,随后"./ a.out"但我仍然不明白Makefile是什么.它是一种shell脚本,一条指令吗?这个任务的Makefile如何看起来如此?提前感谢:)"

c unix makefile

9
推荐指数
4
解决办法
5万
查看次数

允许GCC makefile目标中的空间

有没有办法在使用make.exe时在目标名称中获取空间?如果这个真正古老的错误报告是正确的,似乎是不可能的:http: //savannah.gnu.org/bugs/?712

作为参考,最大的问题是makefile命令如下:

"foo bar baz": $(OBJ)
    $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
Run Code Online (Sandbox Code Playgroud)

...似乎被视为三个独立的命令:一个用于构建"foo(注意包含"),一个用于构建条形图,最后一个用于构建baz"(再次,包括").这是因为make.exe似乎使用空格作为分隔符.

但是,假设人们可能想要构建"Hello World.exe"是合理的.这似乎不可能.双引号不起作用,也没有逃避单独的单词(我在某处读过,不记得链接):

"foo\\ bar\\ baz": $(OBJ)
    $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来解决这个问题?官方手册仅确认按空格标记的内容,但不提供将空间用于任何其他目的的方法:http: //www.gnu.org/software/make/manual/make.html#Rule-句法

编辑:按照建议,我也尝试过单斜线,但这些效果与双斜线完全相同.抱怨它无法找到第一个单词的规则:

mingw32-make.exe: *** No rule to make target `foo', needed by `all'.  Stop.
Run Code Online (Sandbox Code Playgroud)

虽然可以正确生成可执行文件"foo bar baz.exe",但每次每个单词都会进行链接.

gcc mingw makefile space target

8
推荐指数
1
解决办法
4899
查看次数

标签 统计

makefile ×2

c ×1

gcc ×1

mingw ×1

space ×1

target ×1

unix ×1