| {namespace project_config} |
| |
| /***/ |
| {template .soyweb} |
| {call buck.page} |
| {param title: 'project_config()' /} |
| {param prettify: true /} |
| {param content} |
| |
| {call buck.rule} |
| {param overview} |
| A <code>project_config()</code> rule is used to specify the information needed |
| to generate the configuration files for an IDE so the primary build target |
| (and optionally its tests) of a BUCK file can be built using that IDE. |
| |
| <p>Note that there may only be one <code>project_config()</code> rule per |
| BUCK file.</p> |
| {/param} |
| |
| {param args} |
| |
| {call buck.arg} |
| {param name: 'src_target' /} |
| {param desc} |
| A build rule that will serve as the basis of the generated project. |
| Currently, it must be one of: <code>java_library()</code>, |
| {sp}<code>java_test()</code>, <code>android_library()</code>, or |
| {sp}<code>android_binary()</code>. The generated IDE project will be of a |
| type that corresponds to the type of the rule. |
| |
| <p>Also, the <code>deps</code> of this rule will determine the other IDE |
| projects on which the IDE project for this rule depends. |
| Note that this is a heuristic, but it appears to work reasonably well, |
| in practice.</p> |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name : 'src_roots' /} |
| {param default : '[]' /} |
| {param desc} |
| The root directories of the source code that correspond to |
| {sp}<code>src_target</code>. |
| Values may include: |
| <ul> |
| <li> |
| <code>None</code> There are no source roots. This could happen if |
| {sp}<code>src_target</code> identifies an Android library project that |
| is purely resources and no Java code. |
| </li> |
| <li> |
| <code>[]</code> The directory that contains the build file is a Java |
| package. In this case, the root of the package must be one of the |
| ancestor directories. |
| Buck can deduce where the root of the package is by using the |
| {sp}<code>src_roots</code> property in the <code>[java]</code> section |
| of the <code>.buckconfig</code>. |
| </li> |
| <li> |
| <code>['src']</code> The <code>src</code> directory under the build file |
| directory is a source root. This list may contain multiple elements, but |
| in practice, it should almost always contain at most one element. |
| This option supports a list to allow generated source code to be checked in |
| alongside the hand-written source of imported projects. |
| In this case, <code>src_roots</code> would be |
| {sp}<code>['src', 'src-gen']</code>. |
| </li> |
| </ul> |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name : 'test_target' /} |
| {param default : 'None' /} |
| {param desc} |
| If specified, a complementary tests project for <code>src_target</code>. |
| In IntelliJ, source and test code can be grouped together in the same module |
| while having different classpaths. |
| In Eclipse, source and test code are often in separate projects because they |
| need to have different classpaths. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name : 'test_roots' /} |
| {param default : '[]' /} |
| {param desc} |
| Same as <code>src_roots</code>, but for <code>test_target</code>. |
| {/param} |
| {/call} |
| |
| {/param} // close args |
| |
| {param examples} |
| |
| {literal}<pre class="prettyprint lang-py"> |
| project_config( |
| src_target = ':lib-base', |
| src_roots = [ 'src' ], |
| test_target = ':tests', |
| test_root = 'tests', |
| ) |
| </pre>{/literal} |
| {/param} |
| |
| {/call} // close buck.rule |
| |
| {/param} |
| {/call} |
| {/template} |