Home >Backend Development >C++ >How to Create a Simple C Makefile for a Single-File Project?

How to Create a Simple C Makefile for a Single-File Project?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-08 03:48:10972browse

How to Create a Simple C   Makefile for a Single-File Project?

How to Make a SIMPLE C Makefile

Problem:
We need to create a Makefile to manage our C project, but we haven't been taught how to do so. The project consists of a single file, a3driver.cpp, that imports a class from /user/cse232/Examples/example32.sequence.cpp.

Solution:

1. Basic Makefile:

a3a.exe: a3driver.cpp example32.sequence.cpp
    g++ -g -o a3a.exe a3driver.cpp example32.sequence.cpp

This Makefile states that the executable a3a.exe depends on the source files a3driver.cpp and example32.sequence.cpp. When executed, it will execute the command to compile the program into the executable file.

2. Using Built-in Rules:

CC=g++
CPPFLAGS=-g

a3a.exe: a3driver.o example32.sequence.o
    $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o

a3driver.o: a3driver.cpp
    $(CC) $(CPPFLAGS) -c a3driver.cpp

example32.sequence.o: example32.sequence.cpp
    $(CC) $(CPPFLAGS) -c example32.sequence.cpp

This Makefile utilizes built-in rules to simplify the compilation commands. It defines the CC variable as the C compiler, and the CPPFLAGS variable with common compilation flags. The dependencies are still explicitly defined, but the compilation commands are automatically generated.

3. Using Auto-generated Dependencies:

CC=g++
CPPFLAGS=-g

a3a.exe: a3driver.o example32.sequence.o
    $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o

depend: .depend

.depend: $(SRCS)
    $(CC) $(CPPFLAGS) -MM $^ > .depend;

.PHONY: clean

clean:
    rm -f a3driver.o example32.sequence.o .depend

include .depend

This Makefile uses the built-in -MM flag to automatically generate dependencies. The depend target executes the command that generates the file .depend with the dependencies. The .PHONY: clean target is a special target that is not actually a file or rule. The clean target removes the object files and the .depend file.

The above is the detailed content of How to Create a Simple C Makefile for a Single-File Project?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn