Conductor User Guide¶
Conductor is PROS’s templating and project management facility. It is responsible for resolving versions of the PROS kernel and user libraries. It also provides information about a PROS project to other PROS facilities, like providing the target platform (e.g. V5 or Cortex) to the upload utility.
There are a few concepts central to Conductor’s functionality:
- Templates: Templates are a description of a set of files. They have a name, version, supported target, and possibly other metadata. Templates typically come in one of 3 forms: remote, local, and installed. A remote template is a template that can be downloaded. A local template is a downloaded template that can be installed to a project, even when you’re offline. An installed template is a template which has been copied into a PROS project.
- Depots: A depot is a connector to a remote template storage. Conductor doesn’t require any particular access method to these remote templates, but they are typically available from a download link via HTTP. It is possible to implement an SCP, FTP, or other sorts of file transfer depots. The default depot is called pros-mainline and is the official repository of templates.
- Projects: A project is a set of user files and template files. They don’t contain much information on their own - just a target platform and a list of installed templates. PROS Conductor maintains two lists of files originating from templates: user files and system files. User files are never replaced when upgrading a project and system files are always replaced when upgrading a project.
Creating a new project
Installing/upgrading a new template
Fetching a remote template
Fetching a local template archive
A template is a description of a set of files. All PROS
projects are readily capable of creating a template. Change the following
section in your project’s Makefile. Then, to compile and create the template,
pros make template.
LIBNAMEto a name for your library.
VERSIONto a version for your library.
The default behavior of
pros make template is to compile/package all source
files in your project, except for those listed in
Additionally, any header files which you have created will be bundled. More
concisely, any header files which weren’t added by a template are included.
# Set this to 1 to add additional rules to compile your project as a PROS library template IS_LIBRARY:=0 # TODO: CHANGE THIS! LIBNAME:=libbest VERSION:=1.0.0 # EXCLUDE_SRC_FROM_LIB= $(SRCDIR)/unpublishedfile.c # this line excludes opcontrol.c and similar files EXCLUDE_SRC_FROM_LIB+=$(foreach file, $(SRCDIR)/opcontrol $(SRCDIR)/initialize $(SRCDIR)/autonomous,$(foreach cext,$(CEXTS),$(file).$(cext)) $(foreach cxxext,$(CXXEXTS),$(file).$(cxxext))) # files that get distributed to every user (beyond your source archive) - add # whatever files you want here. This line is configured to add all header files # that are in the the include directory get exported TEMPLATE_FILES=$(INCDIR)/**/*.h $(INCDIR)/**/*.hpp
For advanced usage of creating templates, you can modify the
your own custom arguments to
pros conduct create-template