231 likes | 251 Views
CMSC 202. Computer Science II for Majors. Topics. Using submit make unleashed Project 1 questions. Submitting Projects. submit is used for easy submission of projects It is a perl script and provides ACL on AFS Commands which are part of this system submit submitls submitproj
E N D
CMSC 202 Computer Science II for Majors
Topics • Using submit • make unleashed • Project 1 questions
Submitting Projects • submit is used for easy submission of projects • It is a perl script and provides ACL on AFS • Commands which are part of this system • submit • submitls • submitproj • submitrm • Programs provided by Mr. Frey • submitmake • submitrun
Submit … cont • A class name is assigned to each class • CMSC 202 is assigned as cs202 • Names are assigned for projects • Proj0, Proj1, ….. Proj5 for CMSC 202 • All commands of submit system accept command line arguments
Submit … cont • submitproj <class name> • Displays information for a given class • One argument – class name linux1[4]% submitproj cs202 The following projects are defined for dennis's cs202 class: Proj0 testing submit Proj1 (no description available) Proj2 (no description available) Proj3 (no description available) Proj4 (no description available) Proj5 (no description available)
Submit … cont • submit <class name> <project name> <file1> <file2> … • Actually submits your files under the given project name • Re-submitted files will be overwritten • Gives a confirmation of submission
Submit … cont • Example linux1[6]% submit cs202 Proj2 Proj2.C Game.C Game.H Submitting Proj2.C...OK Submitting Game.C...OK Submitting Game.H...OK linux1[7]% submit cs202 Proj2 Game.C It seems you have already submitted a file named Game.C. Do you wish to overwrite? (y/n): y Submitting Game.C...OK OR Do you wish to overwrite? (y/n): n Not Submitting Game.C.
Submit … cont • submitls <class name> <project name> • Lists the files submitted for given project • Lets you check file submission • linux1[16]% submitls cs202 Proj0 • total 14 • drwx------ 2 dennis research 2048 Jan 26 14:45 . • drwx------ 338 dennis research 12288 Feb 6 14:34 .. • -rw------- 1 prasade1 general 0 Jan 26 14:45 proj0.C
Submit … cont • submitrm <class name> <project name> <file1> <file2> … • Used to delete files • Deletes directly without prompting linux1[58]% submitrm cs202 Proj0 proj0.C Deleting proj0.C linux1[16]% submitls cs202 Proj0 total 14 drwx------ 2 dennis research 2048 Jan 26 14:45 . drwx------ 338 dennis research 12288 Feb 6 14:34 ..
Submit … cont • submitmake <class name><project name> • Present in Mr. Frey’s ‘pub’ directory • It compiles and links programs in submittal directory • Run submitmake file in Mr. Frey’s pub directory • 1. Make an alias in .cshrc file • 2. Use an environment variable • % set PATH_202 = /afs/umbc.edu/users/d/e/dennis/pub/CMSC202/ • 3. Go to the pub directory • This will run ‘make Proj1’, create executable Proj1 and remove all object files
Submit … cont • submitrun <class name> <project name> <command-line arguments> • Present in Mr. Frey’s ‘pub’ directory • Runs the project executable • If command line argument is a file, it should be present in local directory • Set path as explained
make • make is a utility program • Helps to keep track of file dependencies • Provides easy maintenance of different files in a project • Looks for a file named – makefile or Makefile • Uses makefile database and last-modified time to update files
make … cont • Makefile describes relationships among files • Makefile provides commands for updating each file • Makefile tells ‘make’ how to compile and link a program Compile g++ Link obj files Execute
make … cont • Makefile consists of Rules of form: Target : Dependencies <TAB>Command • Target is name of file generated by program, e.g. Proj1 • Dependencies are files used as input to create target e.g. proj1.o, WordCount.o
make … cont • Command is action carried out by ‘make’ e.g. Compile using g++ • Note: There is a <TAB> before command • One command per line • A target is considered out-of-date if its modification time is less than any of its dependencies
make … cont • Variables • They allow a text string to be defined once and used multiple times • e.g. OBJ = proj1.o WordCount.o • Variable’s value is obtained as $(OBJ) • Variable names are traditionally uppercase
make … cont • Makefile can contain several Rules • The first rule is considered to be default target and processed • If any dependency is target of another rule, it is processed too.
# CMSC 202 Spring 2003 Project 1 Makefile # Note that lines which begin with # are comments # This "makefile" is read and interpreted by the unix "make" utility to # automate compiling and linking files in large projects. # This file must be named "makefile" or "Makefile" # # The two simplest ways to use the "make" utility are # 1. type make <target> # This causes the make utility to find your makefile and do whatever # is necessary to create the target you specified. # 2. type make # This causes the make utility to find your makefile # and build the first target found in the makefile # When the appropriate target is located, make will # build any of the targets dependencies if needed. # make will continue in this recursive manner until # all necessary targets are up-to-date # D. L. Frey # define an internal symbol for the correct compiler compiler = /usr/local/bin/g++ # define a symbol for the path to Mr. Frey's public directory MrFreysDirectory = /afs/umbc.edu/users/d/e/dennis/pub/CMSC202/p1
# define an internal symbol for compiler switches to be used # the -I switches tells the compiler where to look for .H files # This is needed for project 1 so the compiler can find WordCount.H compilerflags = -ansi -Wall -I . -I $(MrFreysDirectory) # define an internal symbol for the name of the executable for the project PROJECT=Proj1 # define an internal symbol for the list of .o files OBJECTS= proj1.o WordCount.o $(PROJECT): $(OBJECTS) $(compiler) $(compilerflags) -o $(PROJECT) $(OBJECTS) # define proj1.o as a target that is dependent on proj1.C and WordCount.H proj1.o: proj1.C $(MrFreysDirectory)/WordCount.H ${compiler} ${compilerflags} -c proj1.C #define WordCount.o as a target WordCount.o : $(MrFreysDirectory)/WordCount.C $(MrFreysDirectory)/WordCount.H $(compiler) $(compilerflags) -c $(MrFreysDirectory)/WordCount.C
# define some targets which help with directory maintenance # 'make clean' removes all .o files, the project executable and core # dump file clean: touch foo.o rm -rf foo.o $(OBJECTS) $(PROJECT) core # 'make cleanest' removes everything that 'make clean' removes # plus backup files created by the editors cleanest: clean rm -rf *~ *#
make … cont • Adding dependencies to makefile • Suppose you have more files in Project1 • E.g. Proj1 depends on proj1Aux.o OBJECTS= proj1.o WordCount.o proj1Aux.o # define proj1Aux.o as a target that is dependent on proj1Aux.H proj1Aux.o: proj1Aux.C proj1Aux.H $(compiler) $(compilerflags) -c proj1Aux.C
make … cont • Adding target to makefile submit: submit cs202 Proj1 proj1.C OR If you have several files in your project then: submit: submit cs202 Proj1 proj1.C proj1Aux.C proj1Aux.H Please remember the TAB before command