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
Release: 2024-12-08 03:48:10
Original
984 people have browsed it

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
Copy after login

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
Copy after login

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
Copy after login

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template