Automated Builds. Macros
|
|
- Gary Floyd
- 5 years ago
- Views:
Transcription
1 Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See for more information.
2 Manage tasks and dependencies
3 Manage tasks and dependencies paper.pdf paper.wdp figure-1.svg figure-2.svg summary-1.dat data-1-1.dat data-1-2.dat data-1-3.dat
4 "must conform to university style"
5 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg
6 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg C:\papers home
7 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg C:\papers home /lib/styles/ lab
8 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg euphoric.fig data-1-1.dat data-1-2.dat
9 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg C:\papers home euphoric.fig data-1-1.dat data-1-2.dat
10 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg euphoric.fig data-1-1.dat data-1-2.dat C:\papers home /lib/styles/ lab
11 Makefile so far # false-dependencies.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf $< figure-%.svg : summary-%.dat sgr -N -r $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
12 Add directories for working at home # with-directories-at-home.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style c:/papers/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s c:/papers/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
13 Add directories for working at home # with-directories-at-home.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style c:/papers/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s c:/papers/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
14 Add directories for working at home # with-directories-at-home.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style c:/papers/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s c:/papers/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@ Usually don't list "system" files explicitly
15 Add directories for working at home # with-directories-at-home.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style c:/papers/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s c:/papers/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@ Usually don't list "system" files explicitly But what about the lab?
16 1. Write two Makefiles
17 1. Write two Makefiles Write and maintain
18 1. Write two Makefiles Write and maintain 2. Comment and uncomment lines
19 1. Write two Makefiles Write and maintain 2. Comment and uncomment lines Consistently every time
20 1. Write two Makefiles Write and maintain 2. Comment and uncomment lines Consistently every time Will create lots of noise in version control
21 1. Write two Makefiles Write and maintain 2. Comment and uncomment lines Consistently every time Will create lots of noise in 3. Refactor version control
22 Use a macro
23 Use a macro # with-macro.mk STYLE_DIR=c:/papers/ paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style ${STYLE_DIR}/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s ${STYLE_DIR}/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
24 Use a macro # with-macro.mk STYLE_DIR=c:/papers/ paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style ${STYLE_DIR}/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s ${STYLE_DIR}/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
25 Use a macro # with-macro.mk STYLE_DIR=c:/papers/ paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style ${STYLE_DIR}/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s ${STYLE_DIR}/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
26 Only have one thing to change
27 Only have one thing to change Consistency
28 Only have one thing to change Consistency But still have noise
29 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO
30 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO Make reads $MACRO is ($M)ACRO
31 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO Make reads $MACRO is ($M)ACRO Which is probably just "ACRO"
32 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO Make reads $MACRO is ($M)ACRO Which is probably just "ACRO" Which is probably not what you want
33 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO Make reads $MACRO is ($M)ACRO Which is probably just "ACRO" Which is probably not what you want yet another legacy wart
34 Commonly define macros for control flags
35 Commonly define macros for control flags # with-lots-of-macros.mk STYLE_DIR=c:/papers/ WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
36 Commonly define macros for control flags # with-lots-of-macros.mk STYLE_DIR=c:/papers/ WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
37 Commonly define macros for control flags # with-lots-of-macros.mk STYLE_DIR=c:/papers/ WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
38 Now put the first macro in a separate file # config.mk STYLE_DIR=c:/papers/
39 And include it from the main file # with-include.mk include config.mk WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
40 And include it from the main file # with-include.mk include config.mk WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@
41 Actually create two configuration files
42 Actually create two configuration files # config-home.mk STYLE_DIR=c:/papers/
43 Actually create two configuration files # config-home.mk STYLE_DIR=c:/papers/ # config-lab.mk STYLE_DIR=/lib/styles
44 Actually create two configuration files # config-home.mk STYLE_DIR=c:/papers/ # config-lab.mk STYLE_DIR=/lib/styles These two files stay in version control
45 Actually create two configuration files # config-home.mk STYLE_DIR=c:/papers/ # config-lab.mk STYLE_DIR=/lib/styles These two files stay in version control Copy to create config.mk per machine
46 Home paper/ Makefile config-home.mk config-lab.mk
47 Home paper/ Makefile config-home.mk config-lab.mk config.mk
48 Home paper/ Makefile config-home.mk config-lab.mk config.mk Lab paper/ Makefile config-home.mk config-lab.mk
49 Home paper/ Makefile config-home.mk config-lab.mk config.mk Lab paper/ Makefile config-home.mk config-lab.mk config.mk
50 Home paper/ Makefile config-home.mk config-lab.mk config.mk Lab paper/ Makefile config-home.mk config-lab.mk config.mk
51 Can also define macro value on command line
52 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile
53 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile Generally a bad idea
54 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile Generally a bad idea Have to remember to type definition each time
55 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile Generally a bad idea Have to remember to type definition each time correctly
56 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile Generally a bad idea Have to remember to type definition each time correctly And there's no record of the flag
57 Many other approaches
58 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent)
59 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent) Automatically discover/manage differences between machines
60 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent) Automatically discover/manage differences between machines But even harder to debug
61 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent) Automatically discover/manage differences between machines But even harder to debug A build file is a program
62 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent) Automatically discover/manage differences between machines But even harder to debug A build file is a program Requires the same degree of respect
63 created by Greg Wilson August 2010 Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See for more information.
Automated Builds. Rules
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Manage tasks and dependencies
More informationA simple interpreted language
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. A simple interpreted language
More informationA list is a mutable heterogeneous sequence
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. A list is a mutable heterogeneous
More informationThe Unix Shell. Pipes and Filters
The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. shell shell pwd
More informationThe Unix Shell. Permissions
The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. shell shell pwd,
More informationClasses and Objects. Inheritance
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Interpolating time series signals
More informationThe Unix Shell. Job Control
The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. shell shell $
More informationThe Unix Shell. Files and Directories
The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Run Programs Store
More informationLab 1: Robots Allocation and Operation
Lab 1: Robots Allocation and Operation Lab Outline The robots Login to the AIBO Network SVN checkout Starting Player playerjoy and playerv Making & Running your own client Running Clients Remotely ROS
More informationCMake & Ninja. by István Papp
CMake & Ninja by István Papp istvan.papp@ericsson.com Hello & Disclaimer I don t know everything (surprise!), if I stare blankly after a question, go to https://cmake.org/ Spoiler alert: or https://ninja-build.org/
More informationSets and Dictionaries
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Let's try an experiment Let's
More informationPattern Matching, set-up. Pattern Matching, example. Pattern Matching, set-up, cont. Lecture 9: Make Pattern Matching & Conceptual Integrity
Lecture 9: Make Pattern Matching & Conceptual Integrity Kenneth M. Anderson Software Methods and Tools CSCI 3308 - Fall Semester, 2004 Pattern Matching, set-up Below is a fairly standard makefile. What
More informationPython. Directory and File Paths
Copyright Software Carpentry and The University of Edinburgh 2010-2011 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information.
More informationPython. Input and Output
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Been using print to see what
More informationUniversity of Energy and Natural Resources, Sunyani. Name: UBA, Felix. How to get ROMS Summer school August, 2016
University of Energy and Natural Resources, Sunyani Name: UBA, Felix How to get ROMS running @ Summer school August, 2016 Introduction PRESENTATION How to download the code, Configure it for an Application,
More informationAMath 483/583 Lecture 7. Notes: Notes: Changes in uwhpsc repository. AMath 483/583 Lecture 7. Notes:
AMath 483/583 Lecture 7 This lecture: Python debugging demo Compiled langauges Introduction to Fortran 90 syntax Declaring variables, loops, booleans Reading: class notes: Python debugging class notes:
More informationCOSC345 Software Engineering. Make
COSC345 Software Engineering Make The build process Make When to use make How to use make Suffix rules makedepend Outline Warning: Make is different everywhere you go! Build Process The build process can
More informationAMath 483/583 Lecture 7
AMath 483/583 Lecture 7 This lecture: Python debugging demo Compiled langauges Introduction to Fortran 90 syntax Declaring variables, loops, booleans Reading: class notes: Python debugging class notes:
More informationThe Unix Shell. Job Control
The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. shell shell $
More informationCS11 Intro C++ Spring 2018 Lecture 4
CS11 Intro C++ Spring 2018 Lecture 4 Build Automation When a program grows beyond a certain size, compiling gets annoying g++ -std=c++14 -Wall units.cpp testbase.cpp \ hw3testunits.cpp -o hw3testunits
More informationA programming language should not include everything anyone might ever want
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. A programming language should
More informationIntroduction to Programming in C Department of Computer Science and Engineering. Lecture No. #17. Loops: Break Statement
Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #17 Loops: Break Statement (Refer Slide Time: 00:07) In this session we will see one more feature that is present
More informationVersion Control. Ioannis N. Athanasiadis. with slides from Solution Perspective Media and Software Carpentry
Ioannis N. Athanasiadis with slides from Solution Perspective Media and Software Carpentry http://springuniversity.bc3research.org/ 1 What is it A method for centrally storing files Keeping a record of
More informationA function is a way to turn a bunch of related statements into a single "chunk"
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. A function is a way to turn a
More informationWhile Loops CHAPTER 5: LOOP STRUCTURES. While Loops. While Loops 2/7/2013
While Loops A loop performs an iteration or repetition A while loop is the simplest form of a loop Occurs when a condition is true CHAPTER 5: LOOP STRUCTURES Introduction to Computer Science Using Ruby
More informationFirst, let's make sure we have all of the starter code downloaded. MAC (Go to the second part of the tutorial if you are using windows)
CSE 167 HW 0 - Due Thur. Jan 18th at 11:59 p.m. This homework will help you set up OpenGL on your computer. First, let's make sure we have all of the starter code downloaded. https://github.com/ht413/cse167startercode
More informationMySQL: Access Via PHP
MySQL: Access Via PHP CISC 282 November 15, 2017 phpmyadmin: Login http://cisc282.caslab. queensu.ca/phpmyadmin/ Use your NetID and CISC 282 password to log in 2 phpmyadmin: Select DB Clicking on this
More informationDATEXEL LLC. Introducing DEV 9K Version2 with converting four Modbus Flow meters to 4-20 ma. Start-up.
DATEXEL LLC Introducing DEV 9K Version2 with converting four Modbus Flow meters to 4-20 ma. This application is converting four RS485 Modbus RTU Flow meters to four 4-20mA outputs using a Modbus RTU Master
More informationConditional Compilation
Conditional Compilation printf() statements cab be inserted code for the purpose of displaying debug information during program testing. Once the program is debugged and accepted as "working'', it is desirable
More informationThis tutorial will teach you about operators. Operators are symbols that are used to represent an actions used in programming.
OPERATORS This tutorial will teach you about operators. s are symbols that are used to represent an actions used in programming. Here is the link to the tutorial on TouchDevelop: http://tdev.ly/qwausldq
More informationCMPT 373 Software Development Methods. Building Software. Nick Sumner Some materials from Shlomi Fish & Kitware
CMPT 373 Software Development Methods Building Software Nick Sumner wsumner@sfu.ca Some materials from Shlomi Fish & Kitware What does it mean to build software? How many of you know how to build software?
More informationSo far, Wednesday, February 03, :47 PM. So far,
Binding_and_Refinement Page 1 So far, 3:47 PM So far, We've created a simple persistence project with cloud references. There were lots of relationships between entities that must be fulfilled. How do
More informationMakefile Brief Reference
Makefile Brief Reference COMP 229, 346, 444, 5201 Revision 1.1 Date: July 31, 2003 1 Contents Intro Format Examples 2 Intro Makefiles in conjunction with the make utility (man make) provide a very convenient
More informationCopyright
This video looks at Claim Based/Identity Based systems using Active Directory Federation Services as an example. An example of a claim based system is where the user logs into a system like a web page
More informationPatternFinder is a tool that finds non-overlapping or overlapping patterns in any input sequence.
PatternFinder is a tool that finds non-overlapping or overlapping patterns in any input sequence. Pattern Finder Input Parameters: USAGE: PatternDetective.exe [ -help /? -f [filename] -min -max [minimum
More information28 The TTCN to C Compiler
Chapter 28 The TTCN to C Compiler (on UNIX) This chapter describes what the TTCN to C compiler is used for, how to run it and the structure of the generated code. When the TTCN to C compiler has translated
More informationSyntax Warnings Language-Integrated Nitpicking
Syntax Warnings Language-Integrated Nitpicking 1 foo.rkt #lang racket/base (require "util.rkt" racket/match (for-syntax "macro-util.rkt") "macros.rkt" racket/vector (for-syntax "macro-util-more.rkt") (for-template
More informationAdapted from Code.org curriculum
Adapted from Code.org curriculum Objectives Use the return command to design functions. Identify instances when a function with a return value can be used to contain frequently used computations within
More informationCS11 Advanced C++ Fall Lecture 4
CS11 Advanced C++ Fall 2006-2007 Lecture 4 Today s Topics Using make to automate build tasks Using doxygen to generate API docs Build-Automation Standard development cycle: Write more code Compile Test
More informationPorting CESM Jim Edwards CESM Software Engineering Group
Porting CESM 1.2.2 Jim Edwards CESM Software Engineering Group Note: Porting CESM can be a difficult task which may require knowledge of the UNIX operating system, building code with gmake and cmake, scripting
More informationProgramming Assignment IV
Programming Assignment IV 1 Introduction In this assignment, you will implement the static semantics of Cool. You will use the abstract syntax trees (AST) built by the parser to check that a program conforms
More informationProgramming Assignment IV Due Monday, November 8 (with an automatic extension until Friday, November 12, noon)
Programming Assignment IV Due Monday, November 8 (with an automatic extension until Friday, November 12, noon) Thus spake the master programmer: A well-written program is its own heaven; a poorly written
More information===Lab Info=== * 90 points. * Due 11:59pm on Sunday, 9/20/2015 for Monday and Wednesday lab. ==Assignment==
===Lab Info=== * 90 points * Due 11:59pm on Sunday, 9/20/2015 for Monday and Wednesday lab ==Assignment== In this assignment, you will work on closed hashing with open addressing. You are to read in the
More informationNational Aeronautics and Space and Administration Space Administration. CFE CMake Build System
National Aeronautics and Space and Administration Space Administration CFE CMake Build System 1 1 Simplify integrating apps together CFS official Recycled from other projects Custom LC... SC HK A C B Z
More informationMakefile Tutorial. Eric S. Missimer. December 6, 2013
Makefile Tutorial Eric S. Missimer December 6, 2013 1 Basic Elements of a Makefile 1.1 Explicit Rules A the major part of a Makefile are the explicit rules (a.k.a. recipes) that make certain files. Below
More informationMPLAB X IDE PROJECTS Microchip Technology Incorporated. All Rights Reserved DEV Slide 68
MPLAB X IDE PROJECTS 2013 Microchip Technology Incorporated. All Rights Reserved. 17002 DEV Slide 68 MPLAB X IDE Projects What is a project? Definition A Project is defined by a collection of files within
More informationOperating Systems, Assignment 2 Threads and Synchronization
Operating Systems, Assignment 2 Threads and Synchronization Responsible TA's: Zohar and Matan Assignment overview The assignment consists of the following parts: 1) Kernel-level threads package 2) Synchronization
More informationNetwork Defenses 21 JANUARY KAMI VANIEA 1
Network Defenses KAMI VANIEA 21 JANUARY KAMI VANIEA 1 First, the news The Great Cannon of China https://citizenlab.org/2015/04/chinas-great-cannon/ KAMI VANIEA 2 Today Open System Interconnect (OSI) model
More informationGetting to places from my house...
Reductions, Self-Similarity, and Recursion Relations between problems Notes for CSC 100 - The Beauty and Joy of Computing The University of North Carolina at Greensboro Getting to places from my house...
More informationPetuum Bösen Reference Manual
Petuum Bösen Reference Manual Jinliang Wei Carnegie Mellon University, School of Computer Science Revision 0.2 Last Update: July 10, 2015 Bösen Essentials A Brief Introduction 1 What is Bösen Bösen is
More informationNetwork Defenses KAMI VANIEA 1
Network Defenses KAMI VANIEA 26 SEPTEMBER 2017 KAMI VANIEA 1 First the news http://arstech nica.com/secu rity/2015/04/ meet-greatcannon-theman-in-themiddleweapon-chinaused-ongithub/ 2 First the news http://arstechni
More informationCMake refactoring. P. Hristov 19/03/2014
CMake refactoring P. Hristov 19/03/2014 History I Recursive makefiles (F.Carminati): 1999-2001 Problems in dependencies Slow "Recursive Makefiles Considered Harmful" => flat makefiles similar to what Root
More informationNotepad++ The COMPSCI 101 Text Editor for Windows. What is a text editor? Install Python 3. Installing Notepad++
Notepad++ The COMPSCI 101 Text Editor for Windows The text editor that we will be using in the Computer Science labs for creating our Python programs is called Notepad++ and is freely available for the
More informationChapter 11 Introduction to Programming in C
C: A High-Level Language Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University! Gives
More informationRule 1-3: Use white space to break a function into paragraphs. Rule 1-5: Avoid very long statements. Use multiple shorter statements instead.
Chapter 9: Rules Chapter 1:Style and Program Organization Rule 1-1: Organize programs for readability, just as you would expect an author to organize a book. Rule 1-2: Divide each module up into a public
More informationChapter 11 Introduction to Programming in C
Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University C: A High-Level Language! Gives
More informationThis paper was presented at DVCon-Europe in November It received the conference Best Paper award based on audience voting.
This paper was presented at DVCon-Europe in November 2015. It received the conference Best Paper award based on audience voting. It is a very slightly updated version of a paper that was presented at SNUG
More informationCS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco
CS 326 Operating Systems C Programming Greg Benson Department of Computer Science University of San Francisco Why C? Fast (good optimizing compilers) Not too high-level (Java, Python, Lisp) Not too low-level
More informationLab 5 : WordAnalyzer class
Lab 5 : WordAnalyzer class Introduction READ THE INSTRUCTIONS FIRST! The WordAnalyzer class was written to perform a few different analyses of words: - identify the first repeated (adjacent) character
More informationLAB #3: ADDERS and COMPARATORS using 3 types of Verilog Modeling
LAB #3: ADDERS and COMPARATORS using 3 types of Verilog Modeling LAB OBJECTIVES 1. Practice designing more combinational logic circuits 2. More experience with equations and the use of K-maps and Boolean
More informationMakefiles SE 2XA3. Term I, 2018/19
Makefiles SE 2XA3 Term I, 2018/19 Outline Example Calling make Syntax How it works Macros Suffix rules Command line options Example Assume we have files main.c, test.c, and lo.asm Consider the makefile
More informationNetwork Defenses 21 JANUARY KAMI VANIEA 1
Network Defenses KAMI VANIEA 21 JANUARY KAMI VANIEA 1 Similar statements are found in most content hosting website privacy policies. What is it about how the internet works that makes this statement necessary
More informationANITA S SUPER AWESOME RECITATION SLIDES
ANITA S SUPER AWESOME RECITATION SLIDES 15/18-213: Introduction to Computer Systems Dynamic Memory Allocation Anita Zhang, Section M UPDATES Cache Lab style points released Don t fret too much Shell Lab
More informationVersion Control. Software Carpentry Github s Hello World Git For Ages 4 And Up You need source code control now
A version control system (VCS) is a tool or system for keeping track of changes in files. A primitive form of VCS would be making a copy of a file every time you want to make a new version of the file.
More informationA Fast Review of C Essentials Part II
A Fast Review of C Essentials Part II Structural Programming by Z. Cihan TAYSI Outline Macro processing Macro substitution Removing a macro definition Macros vs. functions Built-in macros Conditional compilation
More informationindependent compilation and Make
independent compilation and Make Geoffrey Brown David S. Wise Chris Haynes Bryce Himebaugh Computer Structures Fall 2013 Independent Compilation As a matter of style, source code files should rarely be
More informationLec 3. Compilers, Debugging, Hello World, and Variables
Lec 3 Compilers, Debugging, Hello World, and Variables Announcements First book reading due tonight at midnight Complete 80% of all activities to get 100% HW1 due Saturday at midnight Lab hours posted
More informationMakefiles are a simple way to organize code compilation. Using a makefile it is possible to compile several source files to produce an executable;
Makefile Makefiles are a simple way to organize code compilation. Using a makefile it is possible to compile several source files to produce an executable; Source (.cc) and header (.h) files can be placed
More informationCOMPILER CONSTRUCTION Seminar 02 TDDB44
COMPILER CONSTRUCTION Seminar 02 TDDB44 Martin Sjölund (martin.sjolund@liu.se) Adrian Horga (adrian.horga@liu.se) Department of Computer and Information Science Linköping University LABS Lab 3 LR parsing
More informationConfiguration Control Management
TYX Corporation Productivity Enhancement Systems Reference TYX_0051_11 Revision 1.0 Document ConfControl.doc Date August 08, 2004 Configuration Control Management 1 Project configuration:... 2 1.1 Introduction:...
More information15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019
15-323/15-623 Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 1 Overview In this project, you will create a program that performs real-time audio generation. There
More informationCAAM 420 Daily Note. Scriber: Qijia Jiang. Date: Oct.16. Project 3 Due Wed 23.Oct. Two parts: debug code and library exercise.
CAAM 420 Daily Note Scriber: Qijia Jiang Date: Oct.16 1 Announcement Project 3 Due Wed 23.Oct. Two parts: debug code and library exercise. 2 Make Convention Make syntax for library directories and library
More informationRefactoring Without Ropes
Refactoring Without Ropes Roger Orr OR/2 Limited The term 'refactoring' has become popular in recent years; but how do we do it safely in actual practice? Refactoring... Improving the design of existing
More informationOPERATING SYSTEMS ASSIGNMENT 4 FILE SYSTEM
OPERATING SYSTEMS ASSIGNMENT 4 FILE SYSTEM Introduction The File system is an integral part of every operating system. The use of files enables the user to save persistent data. Files can also be used
More informationSoftware design and Implementation 1/6. Software Design and Implementation. Sample Final Exam
Software design and Implementation 1/6 Software Design and Implementation Sample Final Exam 18.11.2004 Conditions: Closed book Duration: 120 min Name: Student ID: 1. /20 2. /20 3. /20 4. /20 5. /20 Total
More informationCSM CompSci Field Session 2012: 'ddable' Live USB Image Generation for Oracle Solaris Final Report
CSM CompSci Field Session 2012: 'ddable' Live USB Image Generation for Oracle Solaris Final Report Authors: Andrew Grossnickle Earl Colin Pilloud Zachary Harrison Stigall June 19, 2012 1 Introduction 1.1
More informationSystem Guide
http://www.bambooinvoice.org System Guide BambooInvoice is free open-source invoicing software intended for small businesses and independent contractors. Our number one priorities are ease of use, user-interface,
More informationSoftware Development With Emacs: The Edit-Compile-Debug Cycle
Software Development With Emacs: The Edit-Compile-Debug Cycle Luis Fernandes Department of Electrical and Computer Engineering Ryerson Polytechnic University August 8, 2017 The Emacs editor permits the
More informationENGR 3410: MP #1 MIPS 32-bit Register File
ENGR 3410: MP #1 MIPS 32-bit Register File Due: October 12, 2007, 5pm 1 Introduction The purpose of this machine problem is to create the first large component of our MIPS-style microprocessor the register
More informationMatlab notes Matlab is a matrix-based, high-performance language for technical computing It integrates computation, visualisation and programming usin
Matlab notes Matlab is a matrix-based, high-performance language for technical computing It integrates computation, visualisation and programming using familiar mathematical notation The name Matlab stands
More informationlcc-win32 Reference Manual
lcc-win32 Reference Manual Version 2.2 January 2014 Written by Mark Holthouse Westwood High School mholthouse@westwood.k12.ma.us Contents Preface... 3 Using lcc-win32 for the First Time... 3 Starting a
More informationCSci 4061 Introduction to Operating Systems. Programs in C/Unix
CSci 4061 Introduction to Operating Systems Programs in C/Unix Today Basic C programming Follow on to recitation Structure of a C program A C program consists of a collection of C functions, structs, arrays,
More informationLab 3 : Sort program
Lab : Sort program Introduction Your pointy haired Dilbert manager decided to write a Sort program which you have now inherited. The Sort program intends to emulate the main functionality of the GNU sort
More informationTUTORIAL: Quickstart with freediameter
38 TUTORIAL: Quickstart with freediameter How to compile and run freediameter in a simple testbed. Tutorial: Creating a fd testbed 39 Goal : create a simple testbed Two nodes: one client, one server Run
More informationChapter 11 Introduction to Programming in C
C: A High-Level Language Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University Gives
More informationFinal Programming Project
Due Thursday, Dec. 7, at 5:00 pm Logistics This assignment should be completed in groups of 3. This is not optional -- you are not allowed to complete it on your own, or in groups of any other size. I
More informationLab 1: Introduction to Java
Lab 1: Introduction to Java Welcome to the first CS15 lab! In the reading, we went over objects, methods, parameters and how to put all of these things together into Java classes. It's perfectly okay if
More informationMultimedia Programming
Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Data is 1's and 0's Data is 1's
More informationPATH FINDING AND GRAPH TRAVERSAL
PATH FINDING AND GRAPH TRAVERSAL PATH FINDING AND GRAPH TRAVERSAL Path finding refers to determining the shortest path between two vertices in a graph. We discussed the Floyd Warshall algorithm previously,
More informationChapter 21a Other Library Issues
Chapter 21a Other Library Issues Nick Maclaren http://www.ucs.cam.ac.uk/docs/course-notes/un ix-courses/cplusplus This was written by me, not Bjarne Stroustrup Function Objects These are not the only way
More informationCS 429H, Spring 2012 Optimizing the Performance of a Pipelined Processor Assigned: March 26, Due: April 19, 11:59PM
CS 429H, Spring 2012 Optimizing the Performance of a Pipelined Processor Assigned: March 26, Due: April 19, 11:59PM 1 Introduction In this lab, you will learn about the design and implementation of a pipelined
More informationCompiling with Multiple Files The Importance of Debugging CS 16: Solving Problems with Computers I Lecture #7
Compiling with Multiple Files The Importance of Debugging CS 16: Solving Problems with Computers I Lecture #7 Ziad Matni Dept. of Computer Science, UCSB Programming in Multiple Files The Magic of Makefiles!
More informationGetting Started with GCHP v11-02c
Getting Started with GCHP v11-02c Lizzie Lundgren GEOS-Chem Support Team geos-chem-support@as.harvard.edu September 2017 Overview 1) What is GCHP and why use it? 2) Common Misconceptions 3) Useful Tips
More informationReliable programming
Reliable programming How to write programs that work Think about reliability during design and implementation Test systematically When things break, fix them correctly Make sure everything stays fixed
More informationSCIRun: Module Development Basics
SCIRun: Module Development Basics CIBC/NEU Workshop 2012 http://bit.ly/scirundevworkshop Goals Take you from "Hello World" in SCIRun to being able to develop an interesting module. Learn some software
More informationIn either case, remember to delete each array that you allocate.
CS 103 Path-so-logical 1 Introduction In this programming assignment you will write a program to read a given maze (provided as an ASCII text file) and find the shortest path from start to finish. 2 Techniques
More informationHaskell Program Coverage Toolkit
Haskell Program Coverage Toolkit Andy Gill Colin Runciman Why Study Code Coverage? If your program contains reachable code that has not been executed by your tests, then your program is insufficiently
More informationPackage Managers. What are they and why we use them
Package Managers What are they and why we use them Thoughts of an admin Installing software is painful Installing a lot of software is extremely painful Installing a lot of software on a lot of machines
More informationMake: a build automation tool
Make: a build automation tool What is the problem? The lab examples repository for the CS 253 course has 228 files in 54 folders. To build them all would requires us to navigate to 54 folders and compile
More informationLecture 4: Build Systems, Tar, Character Strings
CIS 330:! / / / / (_) / / / / _/_/ / / / / / \/ / /_/ / `/ \/ / / / _/_// / / / / /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / / /_/ / / / / / \ /_/ /_/_/_/ _ \,_/_/ /_/\,_/ \ /_/ \ //_/ /_/ Lecture 4:
More information