Makefiles for different programs


 
Thread Tools Search this Thread
Top Forums Programming Makefiles for different programs
# 1  
Old 01-03-2013
Makefiles for different programs

I have several programs in several directories and want to use make to build the executables. What I have done is to put the main programs in their own directory together with a makefile to build the program. Then I am thinking of having another makefile residing in the directory above so I can run those makefiles.

Is this the way to do things or are there better suggestions?

---------- Post updated at 02:54 PM ---------- Previous update was at 02:23 PM ----------

Currently I have the following tree

Code:
boost-exx
├── bin
├── exx01
│   ├── exx01.cc
│   ├── exx01.o
│   └── Makefile
├── exx02
│   ├── exx02.cc
│   └── Makefile
├── exx03
│   ├── exx03.cc
│   └── Makefile
└── Makefile

---------- Post updated at 03:01 PM ---------- Previous update was at 02:54 PM ----------

The sub makefiles are as follows, with different SOURCES and EXECUTABLE
according to the directory name.

Code:
CPP = g++
CPPFLAGS = -pedantic -Wall -Wextra -Werror -Wno-non-template-friend -DNDEBUG
BOOSTIP = -I../boost_1_52_0
BOOSTLP = -L./library/boost_1_52_0/libs
SOURCES = exx01.cc
OBJECTS = $(SOURCES:.cc=.o)
EXECUTABLE = exx01

all: $(SOURCES) $(EXECUTABLE)
    
$(EXECUTABLE): $(OBJECTS) 
    $(CPP) $(BOOSTLP) $(OBJECTS) -o $@

.cc.o:
    $(CPP) $(CPPFLAGS) $(BOOSTIP) $< -o $@

.PHONY: clean

clean:
    rm -f $(EXECUTABLE) *.o

---------- Post updated at 03:14 PM ---------- Previous update was at 03:01 PM ----------

The main makefile is like this, but is not working

Code:
# Main makefile

PROG = exx
TRGTS = exx01 exx02 exx03

$(PROG): $(TRGTS)

all: $(TRGTS)

exx01:
    cd ./exx01 ; make exx01

exx02:
    cd ./exx02 ; make exx02

exx03:
    cd ./exx03 ; make exx03

clean:
    rm -f *.o *~
    cd ./exx01 ; make clean
    cd ./exx02 ; make clean
    cd ./exx03 ; make clean

---------- Post updated at 03:47 PM ---------- Previous update was at 03:14 PM ----------

My subdirectory makefiles are not working either

---------- Post updated at 04:19 PM ---------- Previous update was at 03:47 PM ----------

Now I have changed the internal makefiles which build the programs successfully
Hence the remaining problem is fixing the top makefile


Code:
CPP = g++
CPPFLAGS = -pedantic -Wall -Wextra -Werror -Wno-non-template-friend -DNDEBUG
BOOSTIP = -I../../boost_1_52_0
BOOSTLP = -L../../boost_1_52_0/libs
SOURCES = exx02.cc
OBJECTS = $(SOURCES:.cc=.o)
EXECUTABLE = exx02

all: $(SOURCES) $(EXECUTABLE)
    
$(EXECUTABLE): $(OBJECTS)
    $(CPP) $(BOOSTLP) $(OBJECTS) -o $(EXECUTABLE)

%.o : %.c
    $(CPP) $(CPPFLAGS) $(BOOSTIP) -c $<

.PHONY: clean

clean:
    rm -f $(EXECUTABLE) *.o

# 2  
Old 01-03-2013
look at the reply#6 to your previous post
https://www.unix.com/302750539-post6.html
It shows general top level make example
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Makefiles

Hi All, I was going through some makefiles where I saw occurrences of explib_subdirs and expinc_subdirs, which I could not understand. Exporting libs to subdirs ? Exporting include files to specified subdirs ? When do we need to do that ? What I could understand is, for a build, I would... (4 Replies)
Discussion started by: alltaken
4 Replies

2. UNIX for Dummies Questions & Answers

Difference between inbuilt suid programs and user defined root suid programs under bash shell?

Hey guys, Suppose i run passwd via bash shell. It is a suid program, which temporarily runs as root(owner) and modifies the user entries. However, when i write a C file and give 4755 permission and root ownership to the 'a.out' file , it doesn't run as root in bash shell. I verified this by... (2 Replies)
Discussion started by: syncmaster
2 Replies

3. Programming

First time programmer needs Help with Makefiles

I am trying to practice to create Makefiles. The goal is to create a makefile such that if a change is made to any of the source code files, the project can be rebuilt by typing make at the command line. I have the following files: ac.cc: has include ac.h and pg.h fr.cc: has main... (8 Replies)
Discussion started by: pintu1228
8 Replies

4. Shell Programming and Scripting

Building programs from separate makefiles

I have several makefiles to build various programs in a software suite (currently 4 programs). I want to create a main Makefile so that I can build everything I need. Unsure on the way I should proceed, for example using include fdtc.mk or calling $(MAKE) -f ./mk/Makefile nfdtc Here... (15 Replies)
Discussion started by: kristinu
15 Replies

5. Shell Programming and Scripting

Makefiles: Writing list to screen

I have a make file and want to write some information and am doing @echo " RAYPK_LIBSRC = $(RAYPK_LIBSRC)" The line of code produces RAYPK_LIBSRC = ./source/library/raypk/time.f ./source/library/raypk/model.f ./source/library/raypk/tomo.f ./source/library/raypk/plt.f... (1 Reply)
Discussion started by: kristinu
1 Replies

6. UNIX for Dummies Questions & Answers

Are programs like sys_open( ) ,sys_read( ) et al examples of system level programs ?

Are the programs written on schedulers ,thread library , process management, memory management, et al called systems programs ? How are they different from the programs that implement functions like open() , printf() , scanf() , read() .. they have a prefix sys_open, sys_close, sys_read etc , right... (1 Reply)
Discussion started by: vishwamitra
1 Replies

7. UNIX for Advanced & Expert Users

makefiles

Solved........ (0 Replies)
Discussion started by: klam
0 Replies

8. Shell Programming and Scripting

How can I print variables im using in makefiles?

for example in my make file im building path from env variables and string but need to see what is did what is the best way to print the result? say I have in my Makefile : exec_prefix = $(RUN_ENV_LOCAL)/apache and I will like to print the exec_prefix value , how can it be done ? (1 Reply)
Discussion started by: umen
1 Replies

9. UNIX for Dummies Questions & Answers

makefiles in a directory and subdirectories

I need to develop a makefile that spans across directories. For example, let's say i have an upper level directory (main) and about 2 subdirectories. I want my .cpp files and .o files to be in one subdirectory. I want my .a files to be in the other subdirectory. The .a files are made up of the... (0 Replies)
Discussion started by: benjie_asu
0 Replies

10. UNIX for Advanced & Expert Users

Combining makefiles

I have concatenated 2 makefiles, to produce 1 however it is not running all of the code, producing a fatal error: symbol referencing errors. No output written. Can anybody please help? (4 Replies)
Discussion started by: Dan Rooney
4 Replies
Login or Register to Ask a Question