Advanced - Make: Build Systems Fall 2026

Submission Instructions

This homework will be submitted as a repository on the EECS GitLab server. The repository you submit will be a private Project with the name/path eecs201-adv-make with akamil added as a Reporter. The branch build will be the one that is checked.

To finish the submission process and get your submission score, you will need to run the autograder. You will need to SSH into the course server (see Basic - Intro):

local$ ssh uniqname@peritia.eecs.umich.edu

(the local$ referring to a shell prompt on your system)

and then run eecs201-test:

peritia$ eecs201-test adv-make

(the peritia$ referring to a shell prompt on the server)

The repository should have the following directory structure, starting from the repository’s root:

/
|-- report.txt
|-- Makefile
|-- CMakeLists.txt

Presentation/Checkoff

In addition to submitting this assignment, you will need to attend a lab session after the deadline to discuss your work with the course staff. Refer to the course schedule for the window for doing so for this assignment.

As part of the discussion, be prepared to do the following:

I suggest keeping these in mind while doing the assignment, and writing down your thoughts so that you can review them before the checkoff.

Your overall score for the assignment will be a combination of your submission score and the presentation/checkoff score. Refer to the syllabus for the details.

Preface

First, initialize a new Git repository and set up its remote appropriately. This repository will simply be used as a mechanism to submit a few files for this assignment.

In this assignment you’ll be provided yet another zipped archive containing some starter files.

https://www.eecs.umich.edu/courses/eecs201/fa2026/files/assignments/adv-make.tar.gz

These starter files are not to be submitted in your repository. They just serve as baseline data for you to work with.

In this part you’ll be writing a more featured Makefile that extends some behavior of Makefiles written in the basic assignment, now with the addition of an object code and a linking step.

When you’re done, add and commit your Makefile to the submission repo.

Using another build system (3)

In the material we alluded to the existence of other build systems. CMake is another tool that helps generate data needed for other build systems Make. Look up how to work with CMake and create a single CMakeLists.txt file that can handle the example-project. The requirements will be much more lax for this part: this CMakeLists.txt file just needs to build an output application called app. (In reality, multiple CMakeLists.txt is a common way of handling more complicated directory structures like this.)

Add and commit your CMakeLists.txt to the submission repo.

Conclusion

  1. Commit your Makefile and/or your CMakeLists.txt file(s) to your submission repo.

  2. Create a file called report.txt.

  3. On the first line provide an integer time in minutes of how long it took for you to complete this assignment.

  4. On the second line and beyond, write down what you learned while doing this assignment. If you already knew how to do all of this, put down “N/A”.

  5. Add and commit this report.txt file. Push your commits to a branch called build.

  6. As this is a GitLab assignment, remember the autograder is available!