Questions tagged «gnu-make»

1
此Makefile如何使C程序甚至不指定编译器?
我正在使用《高级Linux编程(2001)》[代码]一书中的Makefile 。看到GNU make确实正确编译了代码,甚至没有在Makefile中指定编译器,我感到很奇怪。这就像没有任何食谱的烘烤! 这是代码的最低版本: 测试 int main(){} 生成文件 all: test 并使其真正起作用!这是它执行的命令: cc test.c -o test 我找不到任何有用的文档。这怎么可能? PS另加一点注意:甚至没有指定语言;因为test.c可用,所以GNU make使用cc。如果存在test.cpp或test.cc(不存在test.c),则使用g++(而不是c++)。
41 linux  make  gcc  gnu-make 

2
在哪里可以找到“ make”错误代码列表?
我正在尝试使用make(我有一个Makefile,并且在包含Makefile的目录中键入命令$ make target,其中“ target”是我的Makefile中存在的系统特定的目标规范)编译用Fortran编写的程序。在尝试对目标规范进行各种修订时,尝试调用时经常会收到各种错误消息,下面make举几个例子: make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp angfrc.f > angfrc.tmp.f /bin/sh: ./dpp: Permission denied make[1]: *** [angfrc.o] Error 126 make[1]: Leaving directory make: *** [cmu60] Error 2 和 make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp -DSTRESS -DMPI -P …

3
如果命令失败,不要停止makeing,但是要检查退出状态
我试图指示GNU Make 3.81在命令失败的情况下不要停止(所以我在命令前加上-),但我也想检查下一条命令的退出状态并打印出更多信息。但是我的以下Makefile失败: $ cat Makefile all: -/bin/false ([ $$? -eq 0 ] && echo "success!") || echo "failure!" $ $ make /bin/false make: [all] Error 1 (ignored) ([ $? -eq 0 ] && echo "success!") || echo "failure!" success! 为什么上面的Makefile会回显“成功!”。而不是“失败!” ? 更新: 遵循并扩展已接受的答案,下面是应如何编写: failure: @-/bin/false && ([ $$? -eq …
22 make  gnu-make 

3
如何将makefile中给定的依赖关系显示为树?
问题 我想查看makefile的一个或多个目标的依赖关系。因此,我正在寻找一个程序,该程序可以解析makefile,然后以树状格式(缩进,ascii-art,...)或图形(点,...)表示依赖项。 类似 有一些程序可以在其他情况下执行此操作: pactree或btreeree可以树状格式(例如ascii格式)或dot图形形式显示相应格式软件包的依赖关系, gcc -M source_file.c 将C源文件的依赖性显示为生成规则, pstree显示进程树的ascii表示。 进展 在网上搜索时,我发现没有什么帮助。那导致我尝试 make --always-make --silent --dry-run some_target | \ grep --extended-regexp 'Considering target file|Trying rule prerequisite' 但看起来我必须在perl或python中破解一些其他解析代码,才能将其表示为漂亮的树/图。而且我还不知道我是否真的会以这种方式获得完整正确的图表。 要求 最好以某种方式限制图形(没有内置规则,只有给定的目标,只有一定的深度),但是在大多数情况下,我只是在寻找一种工具,该工具将给我一些“合理的”,人类的依赖关系。 -可见格式(例如“相似”下的程序)。 问题 是否有任何程序可以做到这一点? 我会从中获得完整和正确的信息make -dnq ...吗? 有没有更好的方法来获取此信息? 是否已经存在用于解析此信息的脚本/尝试?

1
将GNU-Make限制为POSIX Make行为
make在Linux中编辑或使用他人的Makefile时,是否有已知方法可以使Linux 拒绝意外使用Makefile中的GNU-Make特定扩展名?我的意思是,要限制GNU-Make使其表现为makePOSIX中指定的行为,并且拒绝任何GNU-Make特定的扩展? 该.POSIX专项的目标是不够的,按照“ 4.9特别内置目标名(gnu.org) ”。手册页中没有提到用于此目的的命令行选项。 make也可以选择使用其他实用程序。 -更新2018-10-19- 我仍然没有找到我问题的直接答案,但是至少这里有一个关于此问题的文档,在我有这个问题时还不存在该文档: 可移植Makefile教程(nullprogram.com)。
12 make  gnu-make 

2
Makefile中的%符号是什么意思
我正在使用makefile,遇到%.o或%.c。据我了解,它指定所有c或o文件。但是为什么这样工作: %.o: %.c $(CC) -c $^ -o $@ 这不起作用 SOURCE := $(wildcard *.c) $(SOURCE:.c=.o): SOURCE $(CC) -c $^ -o $@ 这两个表达式都指定所有文件。那么make文件中的%.o:符号做什么呢?
11 make  gnu-make 

2
如何使用来自HTTP的文件作为GNU make中的先决条件?
我想将万维网上的文件用作我的makefile中的先决条件: local.dat: http://example.org/example.gz curl -s $< | gzip -d | transmogrify >$@ 我只想在远程文件比本地文件更新的情况下“迁移”,就像make正常运行一样。 我不希望保留的高速缓存副本example.gz -文件都很大,而且我不需要原始数据。最好我完全避免下载文件。目的是使用-jmake标志并行处理其中的一些。 有什么干净的方法可以解决这个问题?我可以想到一些方法: 保留一个空的虚拟文件,每次重新创建目标时更新 一些使用GNU make的新插件系统的插件(我对此一无所知) 不可知的方式将HTTP服务器安装在本地文件系统中 在深入探讨之前,我想提出一些建议,最好是具体的例子!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.