Labels

Android (1) bash (2) boost (2) C (34) C++ (2) cheatsheet (2) CLion (6) css (3) Debian (33) DL (17) Docker (1) Dreamweaver (2) Eclipse (3) fail2ban (4) git (5) GitHub (4) Hacking (3) html (8) http (1) iOS (1) iPad (1) IRC (1) Java (30) javascript (3) Linux (164) Mac (19) Machine Learning (1) mySQL (47) Netbeans (4) Networking (1) Nexus (1) OpenVMS (6) Oracle (1) Pandas (3) php (16) Postgresql (8) Python (9) raid (1) RedHat (14) Samba (2) Slackware (45) SQL (14) svn (1) tar (1) ThinkPad (1) Virtualbox (3) Visual Basic (1) Visual Studio (1) Windows (2)

Sunday 21 June 2020

Makefile basics

The basis of a simple Makefile

# Define source filename here:
SRC = main.cpp 

# Define output filename here:
OP = test.o

# Define compiler here:
CC = g++

# Define flags here:
CFLAGS = -o

program:
@echo "Building binary: "$(OP)
$(CC) $(CFLAGS) $(OP) $(SRC)

clean:
@echo "Removing binary:"$(OP)
rm $(OP)




The above example is the equivalent of;

g++ main.cpp -o test.o

Running the above with no argument - make will compile a source file (SRC) into an binary object file (OP).

Running make clean with  remove the binary object file (OP)

program: is the default, it will run when make is called with no arguments.

clean: will only run if make clean is called.

The @ suppresses outputting the command itself, so if we have;

echo "test"

This will output as follows:

echo "test"
test

Adding a @ to the beginning of the echo command;

@echo "test" will suppress outputting the command itself.

TBC

No comments:

Post a Comment

Note: only a member of this blog may post a comment.