makefile是:
$@ is: "foo"
$< is: "foo"
执行,我得到:
$<
为什么$@
和foo
扩展到同一目标?
请记住,我们在这里:
$@
,Make正在执行配方。 (因此,foo
的扩展可以)$<
完全没有先决条件。 (因此,.DEFAULT :
@echo '$$< is "$<"'
@echo '$$@ is "$@"'
应扩展为空字符串。)
为了让它更荒谬,让我们尝试下面的makefile:
$ make .DEFAULT
$< is ".DEFAULT"
$@ is ".DEFAULT"
正在运行,我们得到:
$<
真的,我们可以证明$@
和.DEFAULT
扩展到相同的字符串(<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed" />
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" /></android.support.design.widget.CoordinatorLayout>
),当目标完全没有先决条件时,可以开始吗?
答案 0 :(得分:1)
因为foo
是.DEFAULT
和$<
will include implicit prerequisites的隐含先决条件。
第一个先决条件的名称。如果目标从隐式规则获得其配方,则这将是隐式规则添加的第一个先决条件(请参阅隐式规则)。