Differences between revisions 1 and 2
Revision 1 as of 2016-02-22 08:19:06
Size: 868
Comment:
Revision 2 as of 2023-09-15 10:23:29
Size: 718
Editor: RemoChristen
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
New source code files can be added to the planner by adding them to {{{src/search/DownwardFiles.cmake}}}. New source code files can be added to the planner by adding them to {{{src/search/CMakeLists.txt}}}.
Line 5: Line 5:
We group our files into (CMake) "plugins" (not to be confused with the {{{Plugin}}} class in the search code). A CMake plugin is a set of source code files that belong together and that can be enabled/disabled together in a [[ObtainingAndRunningFastDownward#Manual_Builds|manual build]]. Plugins can have dependencies on other plugins. This dependency graph is used to enable all plugins needed for a manual build. For example, if a manual build only enables the plugin {{{POTENTIALS}}}, the plugin {{{LP_SOLVER}}} will be compiled as well because the code for potential heuristics requires an LP solver. We group our files into CMake libraries that can be enabled/disabled in a [[ObtainingAndRunningFastDownward#Manual_Builds|manual build]]. Libraries can have dependencies on other libraries. This dependency graph is used to enable all libraries needed for a manual build. For example, if a manual build only enables the library {{{potentials}}}, the library {{{lp_solver}}} will be compiled as well because the code for potential heuristics requires an LP solver.
Line 7: Line 7:
For details of how to define CMake plugins, see the documentation in {{{src/search/DownwardFiles.cmake}}}. For details of how to define CMake libraries, see the documentation in {{{src/search/CMakeLists.txt}}}.

How to add new files to the planner

New source code files can be added to the planner by adding them to src/search/CMakeLists.txt.

We group our files into CMake libraries that can be enabled/disabled in a manual build. Libraries can have dependencies on other libraries. This dependency graph is used to enable all libraries needed for a manual build. For example, if a manual build only enables the library potentials, the library lp_solver will be compiled as well because the code for potential heuristics requires an LP solver.

For details of how to define CMake libraries, see the documentation in src/search/CMakeLists.txt.