<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" type="topic" id="makefile-project-backend" xml:lang="zh-CN">

  <info xmlns:facet="http://projectmallard.org/facet/1.0/">
    <facet:tag key="all-pages" value="whatever"/> <!--Include page in index-->
    <link type="guide" xref="project-manager#backend"/>
    <desc>
      Makefile project backend.
    </desc>
    <credit type="author">
      <name>Sébastien Granjoux</name>
      <email>seb.sfo@free.fr</email>
    </credit>
    <credit type="editor">
      <name>Philip Chimento</name>
      <email>philip.chimento@gmail.com</email>
    </credit>
  </info>

  <title>Makefile project backend plugin</title>

  <p>
    A makefile is probably the most common way to build software on all
    kinds of platforms. A makefile contains a list or rules describing which
    commands have to be run in order to generate a target from a list of
    dependencies. When building a program, the target is an object file
    and the dependencies are the source files. The target of one rule
    can be a dependency of another one, allowing several rules to be chained
    in order to make a final target.
  </p>

  <p>
    It is a low-level, general tool, making it difficult to find all
    source files and targets of a project.
    So <app>Anjuta</app> has limited support for makefiles, reading only one
    makefile in the top project directory and extracting source files
    and targets.
  </p>

  <note style="bug">
    <p>
      If the project backend is not able to find all the source files, you can
      try to use the directory backend instead. It does not recognize any
      targets but should get all source files.
    </p>
  </note>

  <p>
    Changing properties, or adding or removing targets and source files are
    disabled with this backend, as automatically editing the makefile is not implemented.
    It has to be changed by hand using the text editor.
    When the makefile is saved, it is automatically reloaded though.
  </p>

</page>
