以下Make File有什么问题

时间:2014-08-15 13:01:49

标签: git makefile

您好我是MakeFile的新手,所以在运行以下MakeFile时什么都没有。

assign.pdf:assign.svg
    inkscape -D -A assign.pdf assign.svg
.git:assign.svg assign.pdf
    git init
:assign.pdf assign.svg .git
    git add assign.pdf assign.svg
:assign.pdf assign.svg .git
    git commit -m "File Added to git repositry"

这个makefile的目的是首先使用inkscape从.svg生成.pdf,然后生成git repositry并将这些文件添加到git中。

它只生成pdf文件而没有做任何其他事情。

如果有人知道..请帮忙。

1 个答案:

答案 0 :(得分:1)

除非你告诉它,否则make只构建makefile中定义的第一个目标,该makefile中的第一个目标是assign.pdf

通常,您将类似all的目标作为makefile中的第一个目标:

all: .git assign.svg assign.pdf

.git:
    git init

规则行:

:assign.pdf assign.svg .git
    git add assign.pdf assign.svg
:assign.pdf assign.svg .git
    git commit -m "File Added to git repositry"

令人费解。结肠左侧没有目标;我不确定他们何时会被识别并采取行动。

您正在检查派生文件assign.pdf。有时候这是必要的,但你应该很少这样做。

我不清楚您尝试建模的工作流程。可能是:如果assign.svg自上次创建assign.pdf后发生了更改,请重建assign.pdf并确保assign.svgassign.pdf都是最新的存储库。如果是这样,那么你可以使用:

assign.pdf: assign.svg
    inkscape -D -A assign.pdf assign.svg
    git add assign.pdf assign.svg
    git commit -m 'Automatic commit of assign.pdf and assign.svg' assign.pdf assign.svg

你可能应该计划更多地使用宏,但首先正确使用它也是一个好主意。