我有这个name
:
description
还有一个看起来像这样的目录结构:
Gossamer Gear Mariposa 60
This minimalist pack is made for mowing down the miles.Lightweight backpacking means movement, fast and constant, and every detail on the Mariposa 60 has one purpose: to keep you covering ground. The simple, cavernous packbag holds all the items you won’t need when you’re on the move (we had space for six days’ worth of gear and food on a hike around Colorado’s Gore Range), but it’s the positioning of exterior pockets that orients this pack toward big-mile days. A stretchy shove-it pocket on the front fits raingear, gaiters, and a hiking umbrella and has a drain hole to purge excess moisture. On the side, another tall, stretchy pocket swallows a tarp or minimalist shelter. “That’s the last thing you want to pack up on a rainy, cold day, anyway,” says our deputy editor.Assorted D-rings litter the pack like Christmas ornaments, so “there’s always one where you need it,” says one tester. “You don’t have to stop to stow your gear—you can do it on the move.” Pockets on the optional hipbelt ($45; highly recommended) hold a phone and sunglasses on one side, and a quart-size bag of snacks on the other.You shouldn’t overload a pack this light, but we found the Mariposa did fine with up to 35 pounds aboard—plenty for anyone with an ultralight kit. Credit the removable aluminum stay for the carrying comfort (though careful packing is required to prevent barreling). And when the day is done, slide out the closed-cell foam backpanel and double it over to use as a sit pad. The hipbelt comes in three sizes, but we found it runs bigger than advertised, so consider sizing down. Ding: The toplid is functional, if minimalist, but scores no points for elegance. –Casey Lyons $225 ($270 with hipbelt); 2 lbs. 1 oz. with hipbelt (M); S-L
----
Tecnica Forge GTX
Customization comes to hiking boots.Boot-fit preferences are like fingerprints: No two are the same. And for hikers with finicky feet, finding the perfect boot can be an exercise in frustration. Until now, a custom-fit boot has been a dream (or about a thousand dollars), but that changes with the Forge.While the Forge looks and feels like a normal leather midweight, its heel, arch, and ankle collar are made from a thermo-moldable synthetic, like many ski boot liners. It makes sense: Tecnica has been manufacturing some of the world’s most widely liked customizable ski boot liners for decades. The Forge works much the same way. When you purchase a pair, the sales staff uses an in-store machine to mold the insoles and upper (the free service takes about 20 minutes). Afterward, the boots feel like they’ve been yours for months, not minutes. “I have bunions, so new boots are always a struggle, but the personalized fit eliminated pressure on my usual problem areas,” says one Colorado-based tester who spent the summer hiking in the Forge.But custom molding is only the start. An EVA midsole and an overlap collar (in lieu of a traditional tongue) boost comfort even more on big-mile days, which one tester appreciated when tackling the 110-mile Tour du Mont Blanc. Another tester vouched for the traction after crossing miles of slick, wet rock in New Zealand. “We had to ford tons of rain-swollen creeks, and the Vibram Megagrip sole gave me confidence for rock-hopping,” he says. Tradeoff: Customization like this costs a little more than your average midweight boot. –Eli Bernstein$250 ($270 for synthetic version); 2 lbs. 10 oz. (m’s 9); m’s 7-14.5, w’s 5.5-10.5
----
etc.
为什么Makefile
表现如下:
%: %.x
cp $< $@
build/%: src/%
cp $< $@
为什么看不到
Makefile
build/
src/
hello.x
转换为make
,并且$ make build/hello
make: *** No rule to make target 'build/hello'. Stop.
复制到src/hello.x
吗?答案 0 :(得分:2)
根据GNU make manual,即:
如果未将任何匹配规则标记为终止,则该规则为非终止。非终结符匹配规则不能应用于指示特定数据类型的文件名。如果某些不匹配的隐式规则目标与之匹配,则文件名指示特定的数据类型。
您的第一个规则是非终结匹配规则,因此它不能应用于指示特定数据类型的目标src/hello
。使用make build/hello -d
的调试日志还显示了该过程:
......
Considering target file `build/hello'.
Looking for an implicit rule for `build/hello'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `src/hello'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `build/hello,v'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `build/RCS/hello,v'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `build/RCS/hello'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `build/s.hello'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `build/SCCS/s.hello'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `src/hello'.
Looking for a rule with intermediate file `src/hello'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `src/hello,v'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `src/RCS/hello,v'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `src/RCS/hello'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `src/s.hello'.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `src/SCCS/s.hello'.
No implicit rule found for `build/hello'.
Finished prerequisites of target file `build/hello'.
No need to remake target `build/hello'.
make: Nothing to be done for `build/hello'.
您应该使用双冒号定义第一个规则,将任何匹配规则标记为terminal
。
当规则为终止规则时,除非其先决条件确实存在,否则该规则将不适用。其他隐式规则可能会产生的前提条件还不够好。换句话说,不允许超出最终规则的进一步链接。
将您的makefile更改为:
%:: %.x
cp $< $@
build/%: src/%
cp $< $@
使用make build/hello
测试:
cp src/hello.x src/hello
cp src/hello build/hello
rm src/hello
下面的调试日志显示了它的工作方式:
......
Looking for a rule with intermediate file `src/hello'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `hello'.
Trying implicit prerequisite `src/hello.x'.
Found an implicit rule for `build/hello'.
Considering target file `src/hello.x'.
Finished prerequisites of target file `src/hello.x'.
No need to remake target `src/hello.x'.
Considering target file `src/hello'.
File `src/hello' does not exist.
Pruning file `src/hello.x'.
Finished prerequisites of target file `src/hello'.
Must remake target `src/hello'.
cp src/hello.x src/hello
Putting child 0x08a51438 (src/hello) PID 30908 on the chain.
Live child 0x08a51438 (src/hello) PID 30908
Reaping winning child 0x08a51438 PID 30908
Removing child 0x08a51438 PID 30908 from chain.
Successfully remade target file `src/hello'.
Finished prerequisites of target file `build/hello'.
Must remake target `build/hello'.
cp src/hello build/hello
Putting child 0x08a51438 (build/hello) PID 30909 on the chain.
Live child 0x08a51438 (build/hello) PID 30909
Reaping winning child 0x08a51438 PID 30909
Removing child 0x08a51438 PID 30909 from chain.
Successfully remade target file `build/hello'.
Removing intermediate files...
rm src/hello