- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我关注了Advanced Auto-Dependency Generation纸 -
生成文件:
SRCS := main.c foo.c
main: main.o foo.o
%.o: %.c
$(CC) -MMD -MG -MT '$@ $*.d' -c $< -o $@
cp $*.d $*.tmp
sed -e 's;#.*;;' -e 's;^[^:]*: *;;' -e 's; *\\$$;;' \
-e '/^$$/d' -e 's;$$; :;' < $*.tmp >> $*.d
rm $*.tmp
clean::
-rm *.o *.d main
-include $(SRCS:.c=.d)
#include "foo.h"
int main(int argc, char** argv) {
foo() ;
return 0 ;
}
#ifndef __FOO_H__
#define __FOO_H__
void foo() ;
#kết thúc nếu
foo.h
成为生成的文件——
...
HDRS := foo.h
$(HDRS):
mk_header.sh $*
clean::
-rm $(HDRS)
...
#!/thùng/bash
UP=$(tr "[:lower:]" "[:upper:]" <<< $1)
cat < $1.h
#ifndef __${UP}_H__
#define __${UP}_H__
void $1() ;
#kết thúc nếu
Cuối cùng
làm
,
main.d
尚未生成,因此
foo.h
不被视为先决条件,因此不会生成:
$ ls
foo.c main.c Makefile mk_header.sh*
$ make
cc -MMD -MG -MT 'main.o main.d' -c main.c -o main.o
cp main.d main.tmp
sed -e 's;#.*;;' -e 's;^[^:]*: *;;' -e 's; *\\$;;' \
-e '/^$/d' -e 's;$; :;' < main.tmp >> main.d
rm main.tmp
cc -MMD -MG -MT 'foo.o foo.d' -c foo.c -o foo.o
cp foo.d foo.tmp
sed -e 's;#.*;;' -e 's;^[^:]*: *;;' -e 's; *\\$;;' \
-e '/^$/d' -e 's;$; :;' < foo.tmp >> foo.d
rm foo.tmp
cc main.o foo.o -o main
$ ls
foo.c foo.d foo.o
main* main.c main.d main.o
Makefile mk_header.sh*
làm
的第二次调用中,
foo.h
生成,结果另一个构建级联。
$ make
./mk_header.sh foo
cc -MMD -MG -MT 'main.o main.d' -c main.c -o main.o
cp main.d main.tmp
sed -e 's;#.*;;' -e 's;^[^:]*: *;;' -e 's; *\\$;;' \
-e '/^$/d' -e 's;$; :;' < main.tmp >> main.d
rm main.tmp
cc main.o foo.o -o main
$ ls
foo.c foo.d foo.h foo.o
main* main.c main.d main.o
Makefile mk_header.sh*
làm
意识到:
$ make
make: `main' is up to date.
*.d
时不必重新评估整个 make 树而实现的性能提升。碎片?
1 Câu trả lời
问题在于*.d
必须执行 Makefile-fragments 生成 后 所有的头生成都完成了。这样一来,就可以使用 make 依赖项来强制执行正确的顺序:
SRCS := main.c foo.c
HDRS := foo.h
main: main.o foo.o
%.o: %.c | generated_headers
$(CC) -MMD -MG -MT '$@ $*.d' -c $< -o $@
cp $*.d $*.tmp
sed -e 's;#.*;;' -e 's;^[^:]*: *;;' -e 's; *\\$$;;' \
-e '/^$$/d' -e 's;$$; :;' < $*.tmp >> $*.d
rm $*.tmp
-include $(SRCS:.c=.d)
$(HDRS):
mk_header.sh $*
generated_headers: $(HDRS)
clean:
-rm $(HDRS) *.o *.d main
.PHONY: clean generated_headers
generated_headers
的先决条件。 .PHONY
目标。假设header生成规则写得正确,一旦生成正确,满足generated_headers
目标应该是一个空操作。 FAST_AND_LOOSE
标志,这将关闭此功能:%.o: %.c | $(if $(FAST_AND_LOOSE),,generated_headers)
...
make FAST_AND_LOOSE=1 main.o
关于makefile - GNU 制作 : Generating automatic dependencies with generated header files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5229561/
安装 Windows 服务时,有两个选项可用于在 Windows 启动时自动启动 Windows 服务。一种是自动,另一种是自动(延迟启动)。这两者具体有什么区别? 例如,如果您使用 wixtools
使用Xcode 4.2,如何启用/禁用“自动引用计数”? ANSWERED 在“构 build 置”下,根据是否要启用ARC翻转"is"和“否”。 最佳答案 全局范围内: 转到“构 build 置”,
在学习 PHP 中 Cookie 的概念时,我从 w3schools PHP Tutorial 中看到以下语句: The value of the cookie is automatically UR
在学习 PHP 中 Cookie 的概念时,我从 w3schools PHP Tutorial 中看到以下语句: The value of the cookie is automatically UR
我曾经有自动代码签名身份:iPhone Developer 在真实设备上进行测试(它与我的“开发”证书匹配)。 很快在我的目标设置中,我无法选择“iPhone 开发者”,而且我没有看到任何开发者证书,
当我编译这段代码时: class DecoratedString { private: std::string m_String; public: // ... constructs
我在 Kathy Sierra 的书中读到过: “局部变量有时称为堆栈、临时、自动或方法变量,但无论您使用什么,这些变量的规则都是相同的调用他们。” 为什么局部变量叫automatic? 最佳答案 当
复制代码 代码如下: Const OWN_PROCESS = &H10 Const ERR_CONTROL = &H2 Const INTERACTIVE = False
我有以下问题: 我需要在条形图中从最高到最低排序我的值: 我知道我可以使用数据透视表和数据透视图,但将来可能会有点复杂。 最佳答案 我建议通过使用帮助列来根据需要对数据进行排序来实现这一点。 C 列:
我本质上想创建一个每次都会执行的变量。举个最简单的例子: $myvar = `write-host foo`; 然后每次我引用 $myvar 时,它都会输出 foo: dir $myvar Direc
有人知道有一个实用程序可以自动检测并删除 uses 子句中不需要的单元吗? 最好是.. 可以针对一个单元和/或一个项目运行 免费且可与 Delphi 2010 配合使用 提前致谢。 最佳答案 尝试使用
在大多数情况下,当您阅读here时,IBOutlet应该很弱。 现在,您可以在development library中阅读,并非所有类都支持弱引用。 (例如NSTextView)。这意味着您必须使用a
只是一个简单的问题(我想)但是,假设我有以下数据文件: # no x data, it's sampled for instance each second. 23 42 48 49 89 33 39
我在以前工作的应用程序上用 RC 更新了 ASP.NET 5 框架 beta-8 包。在我让它运行后,启动过程中出现下一个错误: InvalidOperationException: No authe
我编写了一个Powershell脚本,该脚本应将服务设置为StatusType ='Automatic'。但是,当我运行脚本时,它实际上设置了StatusType ='Automatic(Delaye
我想知道 WPF 中是否有一种自动控制大小调整的功能。 我的意思是,一种根据用户屏幕分辨率自动调整元素大小的方法,而无需在代码中定义它。 谢谢。 最佳答案 首先,WPF 使用与设备无关的像素,这意味着
我正在从 bat 文件或 Python 文件调用外部程序 (fxTsUtf8.exe)。我浏览了数百个 sos 文件。在某些情况下,exe 文件可能会由于读取 sos 文件中的错误而失败。要继续执行
我想知道正在创建的这个线程(引用代码片段)是否会在完成其工作后在垃圾收集中自动终止。 我正在创建一个基本的聊天程序,以学习如何使用套接字、创建客户端和创建服务器。我很快发现,如果我希望能够从客户端发送
我目前正在修复一个 JSP 项目,它目前在 Tomcat 的 WEB-INF 文件夹中有一个看似随机的 .class 文件集合。作为简化这一点的一种方法,我计划从这些类中直接从 SVN 获取 .jav
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及
Tôi là một lập trình viên xuất sắc, rất giỏi!