problem with Makefile


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users problem with Makefile
# 1  
Old 08-26-2002
problem with Makefile

Hi,

I have a makefile which looks like this

ProcessA :
commands

touch pro1

ProcessB : pro1
commands

touch pro2

ProcessC: pro3
commands


and after some runs, i wish only pro3 to run and I check that "pro1" and "pro2" are there in the directory, but still, if i give make Process3, it starts right from ProcessA and does all the steps.
Is there anything wrong?

Thanks,
Balaji
sskb
# 2  
Old 08-27-2002
There are several things to note, keep in mind that the make utility and makefiles are extremely versatile and can become extremely complicated.

I'll start at the beginning with some basics, if need be I can go into more detail later.

make does not need a makefile! If you have a file called prog.c you can type
# 3  
Old 08-27-2002
Sorry, browser went funny ?

As I was saying, if you have a file called prog.c you can type
make prog
make has its own build in rules and will know how to create prog from prog.c

A simple makefile consists of targets and dependencies with associated commands, in general: -

target: dependency
<tab>command

I can't tell from your posting what whitespace you have in your makefile, this is important as the dependency line must NOT begin with a tab, the command line MUST begin with a tab.

I think there may be a couple of problems with your makefile, here's one that I believe will do what you want: -

ProcessA:
@echo "ProcessA"
touch proc1

ProcessB:
@echo "ProcessB"
touch proc2

ProcessC:
@echo "ProcessC"
touch proc3

You'll notice there are no dependencies, in fact there are NULL dependencies, this means the target is always rebuilt

you can now use
make ProcessA
make ProcessB
make ProcessC

however if you use make on its own it will only build the first dependency. This can be modified to build everything and can include more advanced techniques to selectively build different sources.

Let me know if you want more info, if so tell me what sources you are building with a little more detail, ie C/C++ files, related headers, etc.

Hope it helps.
# 4  
Old 08-27-2002
qanta, if you have difficulty posting, you can edit your post. But also, I think you missed what he wants to do.

sskb, the crux of your problem is that you are using a rule named "ProcessA" to make a file called "pro1". You need to name the rule after the file that it will create. The name of a rule is called a "target" for a reason. You can use secondary rules to create "aliases" if you really want to. And, qanta has a point about the first rule. You should always tary to ensure that just using the command "make" will try to do the most useful thing.

Here is my makefile that I think addresses all of this. And as qanta points out, what I will type as spaces should be just a tab character.
Code:
default: ProcessC

ProcessA: pro1
ProcessB: pro2
ProcessC: pro3

pro1:
       @echo making pro1
       touch pro1

pro2: pro1
       @echo making pro2
       touch pro2

pro3: pro2
       @echo making pro3
       touch pro3

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Problem running a makefile

I have written this makefile and am getting an error saying make nfd gfortran -O -Wall -fbacktrace -fno-align-commons -c -o fd.o fd.f fd.f:49: Error: Can't open included file 'fd.par' make: *** Error 1 The directory structure is as follows . ├── library │ ├── fd │ │ ├──... (3 Replies)
Discussion started by: kristinu
3 Replies

2. Programming

Problem creating a makefile

hello, I'm trying to create a makefile to run multiple c files. I am able to run one c file only with the code I have when I tried to run 2 or more c files I'm not able. here is my code # $Source: /home/hectormasencio/make/Makefile,v $ # $Date: 2012/11/27 11:35:30 $ CC= gcc OBJS= temp.o... (3 Replies)
Discussion started by: Hector M.
3 Replies

3. Emergency UNIX and Linux Support

Problem With Makefile

I had created a Makefile for my project. my project file hierarchy is like this: 1. a source folder with main.c and Makefile in it 2. and a top level Makefile here is the Makefile in src folder all: program program: main.c gcc -o program main.c clean: rm programand here is top... (3 Replies)
Discussion started by: majid.merkava
3 Replies

4. Programming

Noob makefile problem

Im trying to build a makefile for the first time in many years and Im coming to a screaching halt on something that should be child's play; just compiling two files. Here is an excerpt of the make file. (using GMAKE on a TI compiler) CCHP = <<compiler>> PROJ_DIR = . APP_DIR ... (2 Replies)
Discussion started by: DrNismo
2 Replies

5. Programming

Problem with Makefile

Hi, Here is my makefile http://pastie.org/1104332. I am trying to compile different .c files and .s files (assembly files) from different sub directories into E:/em35x/build/mfg-sample-app-cortexm3-iar-em357-em3xx-dev0680/ then the linker should link all the .o files from the build directory... (1 Reply)
Discussion started by: blade2008
1 Replies

6. Programming

please help me with this big makefile problem

I need to create an executable with these two makefiles(they both have libaries i need(qt and ruby)) i have extconf.rb gui.ui gui_include.h main.cpp ScaleIM_client.rb ui_gui.h i want to combine them all into one executable please!... (2 Replies)
Discussion started by: gjgfuj
2 Replies

7. UNIX for Advanced & Expert Users

Makefile problem - How to run module load in a Makefile

Hi, I'm trying to run the module load command in a Makefile and i'm getting the following error: make: module: command not found Why is this? Is there any way to run this command in a Makefile? NOTE: command - module load msjava/sunjdk/1.5.0 works fine outside of the Makefile (2 Replies)
Discussion started by: hernandinho
2 Replies

8. Programming

Simple Makefile Problem (with a dependency)

Hi all, I have 4 '.cpp' files and 1 header files: Tools.cpp Code1.cpp Code2.cpp Code3.cpp and Tools.hh Now all Code1.cpp, Code2.cpp, Code3.cpp use functions stored in Tools.cpp. Currently, what I do to compile all of them is using this simple shell script: (1 Reply)
Discussion started by: monkfan
1 Replies

9. Programming

Problem with makefile

My make file is CFLAGS = -Wall -g LDFLAGS = -lm CC = g++ all: server client rc4.o: rc4.cpp rc4.h ${CC} ${CFLAGS} -c rc4.cpp server.o: server.cpp rc4.h ${CC} ${CFLAGS} -c .cpp client.o: client.cpp rc4.h ${CC} ${CFLAGS} -c client.cpp server: server.o... (2 Replies)
Discussion started by: neerajgoyal12
2 Replies

10. Programming

Problem with a Makefile

Hi, I am very new with makefile topics , maybe this is a very symple question... I have this code wich compile very good ( I get it from the net), I will call it code A. I have to add it with a program that is all ready in use, (code B) that also compile good. When I put together it doesnt... (7 Replies)
Discussion started by: pmoren
7 Replies
Login or Register to Ask a Question