From 5bf122e1aee736c8f2e60943c696f3ae61e6d845 Mon Sep 17 00:00:00 2001 From: Peter Thedens <pthedens@iastate.edu> Date: Sun, 25 Feb 2018 18:35:50 -0600 Subject: [PATCH] Update doc --- quad/doc/Makefiles.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/quad/doc/Makefiles.md b/quad/doc/Makefiles.md index e562f8d23..994c4d156 100644 --- a/quad/doc/Makefiles.md +++ b/quad/doc/Makefiles.md @@ -2,7 +2,8 @@ ## [library.mk](../library.mk) This file contains many definitions of make targets for building libraries and building and running their corresponding tests. A set of variable definitions are at the top of the file. -The "User Targets" are defined for building a library (`default`), building and running tests (`test`), and cleaning the library (`clean`). +Within this file, the "User Targets" are defined for building a library (`default`), +building and running tests (`test`), and cleaning the library (`clean`). The "Internal Targets" are used for building the library and test binary and rely on abstraction. ## [executable.mk](../executable.mk) @@ -13,31 +14,33 @@ The "Internal Targets" are used for building the executable and rely on abstract ## [quad/Makefile](../Makefile) This Makefile contains targets for building libraries and binaries and their associated tests. -In this file, the specific libraries/executables and their locations are listed as opposed to the `.mk` files which have purely abstract definitions. +In this file, the specific libraries/executables and their locations are listed, +as opposed to the `.mk` files which have purely abstract definitions. It also contains a `clean` target for removing compiled libraries and binaries. A target for generating an image of the control network, called `diagram`, is also located here. ## Library Makefile Each library needs its own Makefile. -This contains a set of definitions for variables so that the abstract targets in `library.mk` can work properly and any additional targets you want to add that are specific to this library. +This contains a set of definitions for variables, so that the abstract targets in `library.mk` +can work properly, and any additional targets you want to add that are specific to this library. The following variable definitions should be included: - `NAME`: The name of the library - `TOP`: a relative path to the `quad/` directory - `REQLIBS`: a list of the libraries necessary to compile this library, in the form of compiler flags, i.e. `-l<name>` -_Note: The `REQLIBS` list should include the name of this library at a minimum, as any tests associated with it would need its own library to be linked in order to be useful._ +_Note: The `REQLIBS` list should include the name of this library at a minimum, +as any tests associated with it would need its own library to be linked in order to be useful._ Additionally, a line like the following should be included: `include $(TOP)/library.mk` This allows the library to use the targets in the `library.mk` file to be applied to this directory. - Any other make targets wanted for the library should also be included. ## How to add a library To add a library: -1. Add your library to the libs and clean targets in `quad/Makefile` with a path to the directory containing the library -1. Add a Makefile to the library with the variable definitions in it as described above -1. Update the `REQLIBS` variable for any library or executable that need this new library to compile +1. Add your library to the `libs` and `clean` targets in [`quad/Makefile`](../Makefile) with a path to the directory containing the library +1. Add a Makefile to the new library with the variable definitions in it as described above +1. Update the `REQLIBS` variable for any library or executable that needs this new library to compile -- GitLab