根据GNU Make Manual,我了解ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonData); //jsonData is your json string here...
JsonNode names = rootNode.path("name");
Iterator<JsonNode> elements = names.elements();
while(elements.hasNext()){
JsonNode name = elements.next();
System.out.println("Names are = "+name);
}
程序有一个隐含规则:
n.o由n.c自动生成,格式为“ $(CC)$(CPPFLAGS)$(CFLAGS)-c”
例如,当我键入.c
并且在工作目录中只有一个make helloworld
文件时,我看到执行了以下操作:
helloworld.c
如果键入cc helloworld.c -o helloworld
,我将发现make -d helloworld
永远不会寻找中间make
文件。
最后,我在目录中没有看到helloworld.o
文件,只有可执行文件。如果.o
程序的隐式规则表示应建立make
文件,则.c
如何从源文件构建可执行文件?
答案 0 :(得分:2)
内置数据库中有不同的隐式规则。如果模式规则模棱两可,请make绝不反对,因为它总是为它们设置优先级。
在这种情况下,规则%: %.o
和%.o: %.c
被规则%: %.c
取代(因为一个步骤胜于两个步骤;-)),该规则的确编译为可执行文件,而没有曾经创建过目标文件(是的,gcc可以做到这一点)。
但是,您可以使用以下命令强制创建.o:
make helloworld.o helloworld
在这里,成功创建helloworld.o之后,make将更喜欢%: %.o
规则而不是%: %.c
,因此它可以按预期工作。
答案 1 :(得分:1)
有很多隐式规则。在这种情况下,有一个可以直接从C文件构建可执行文件的程序。在make -d helloworld
的输出中,您应该看到类似以下内容的
尝试隐式先决条件“ helloworld.c”。
找到了“ helloworld”的隐式规则。