09-24-2009
Makefile: multiple target variable substitution
Greetings!
Basically, I would like to properly handle this with gnu make:
alltools: my_tool mysecond_tool mythird_tool etc_tool
%_tool: dir1/%_tool.vf dir2/%_tool/subdir2/%_tool.ver
<tab>@echo done
%.vf:
<tab>RUN_VF $*
%.ver:
<tab>RUN_VER $*
So, if I were to do something like:
UNIX> make alltools
Where each *_tool would be dependent on 2 files: dir1/*_tool.vf & dir2/*_tool/subdir2/*_tool.ver.
However, it looks like make only allows one substitution per dependency. So what make actually tries to make are these files (for my_tool):
dir1/my_tool.vf & dir2/my_tool/subdir2/%_tool.ver
'my' did not get substituted into '%' at both places in the second dependency.
So, my question is, can this be done with some other special variable? Or, is there a simple trick to getting around this?
Thanks in advance!
Harlin!
10 More Discussions You Might Find Interesting
1. Solaris
Hi,
I am getting the following error while building on Solaris 64 , while I am trying to build.
Error Snippet :-
----------------------
Makefile:57: *** multiple target patterns. Stop.
make: Leaving directory `/work1/patch/vds6053sun64o/vobs/jvi'
make: *** Error 2
make: Leaving directory... (0 Replies)
Discussion started by: nileshborate
0 Replies
2. HP-UX
I receive an error while installing Oracle 9i:
Error in invoking target install of makefile
/opt/oracle/product/9.2.0/sqlplus/lib/ins_sqlplus.mk
Furthermore:
$ whoami
oracle
$ echo $ORACLE_HOME
/opt/oracle/product/9.2.0
$ pwd
/opt/oracle/product/9.2.0/sqlplus/lib
$ ll
total... (5 Replies)
Discussion started by: chris2005
5 Replies
3. Shell Programming and Scripting
This is driving me crazy. I'm trying to automate some things in my makefile and I'm running into a substitution issue.
I'm trying to automatically create object directories if they don't already exist based on the listed source files found in the $(SRCARM) variable.
SRCARM = dir1/file1.c \... (0 Replies)
Discussion started by: loki980
0 Replies
4. Shell Programming and Scripting
Hello,
I'm having a problem with a makefile script i'm trying to write.
I want to compile a C++ program in two possible ways: "make"
(default target, main) and "make debug". When i supply the debug
target, exactly the same as main should be built, but then with the
DEBUG flag (-g -D... (2 Replies)
Discussion started by: StevenR
2 Replies
5. Shell Programming and Scripting
Hi,
I want to get content of a$i variables with one command:
a1=/tmp1.log
a2=/tmp2.log
for i in 1 2;do
log=<some code>
echo $log
done
and get the content of a1 and a2:
/tmp1.log
/tmp2.log
Thanks (2 Replies)
Discussion started by: gdan2000
2 Replies
6. Solaris
Hi,
I have a small piece of Makefile script which throw's error on Sun Sparc machine, but works fine with Sun Optron, Linux, AIX machines.
FOO=Naveen
test1:FOO=Dhilip
test1:
@echo FOO is ${FOO}
test2:
@echo Me is ${FOO}
Output on Sun Sparc -
ukhml-v890new-~/test: make test1... (5 Replies)
Discussion started by: nsriram
5 Replies
7. Shell Programming and Scripting
Goal: I'm trying to create a PHONY target inside my Makefile so that when I run the command "make backup",
It will move all the files that end in "~" into the specified backup folder.
Here is my code currently, and I'll explain the problem after:
.PHONY: backup
backup:
@mkdir -p... (2 Replies)
Discussion started by: Xploit
2 Replies
8. Programming
I am writing a Makefile for Cobol on Linux.My sample Makefile looks like below.
I do not want to Hardcode Program names in Makefile.Is there any way we can mention directories in Target and Prerequisites instead of File names sothat Makefile Pickup all the files in mentioned path as below.... (8 Replies)
Discussion started by: kiranksb
8 Replies
9. Programming
I am trying to create a makefile to build a program and am getting the following error:
make -f tsimplex.mk
make: *** No rule to make target `/main/tsimplex_main.cpp', needed by `tsimplex_main.o'. Stop.
OPSYS = $(shell uname -s )
TARGET = tsimplex
ROOTDIR = ../../..
GTSDIR =... (1 Reply)
Discussion started by: kristinu
1 Replies
10. Shell Programming and Scripting
I have a huge script which is defining variables with full path of commands in the beginning of code and using those variables in the script.
For Example:
ECHO=/bin/echo
LS=/bin/ls
SED=/bin/sed
AWK=/bin/awk
UNAME=/bin/uname
PS=/bin/ps
DATE=/bin/date
GREP=/bin/grep
$ECHO "hello... (1 Reply)
Discussion started by: veeresh_15
1 Replies
opendiff(1) BSD General Commands Manual opendiff(1)
NAME
opendiff -- Use FileMerge to graphically compare or merge file or directories
SYNOPSIS
opendiff file1 file2 [-ancestor ancestorFile] [-merge mergeFile]
opendiff dir1 dir2 [-ancestor ancestorDirectory] [-merge mergeDirectory]
DESCRIPTION
opendiff is a command line utility that provides a convenient way to launch the FileMerge application from Terminal to graphically compare
files or directories. If FileMerge is already running, opendiff will connect to that running instance for the new comparison. opendiff
exits immediately after the comparison request has been sent to FileMerge.
opendiff and FileMerge can be used to compare two files file1 and file2 or to compare two directories dir1 and dir2.
If the -ancestor flag is given, FileMerge will compare the two files or directories to a common ancestor. This is useful if two people inde-
pendently modify copies of a single original file or directory.
FileMerge lets you merge two files or directories together to create a third file or directory. To see the contents of a merged file, drag
the splitter bar at the bottom of FileMerge's file comparison window. The contents of the merged file can be directly edited within File-
Merge. After editing, the merged file can be saved to the file (or into the directory) specified with the Fl merge flag. If a destination
is not specified with the -merge flag, FileMerge will ask for a destination file or directory when you try to save a merged file.
For further information, please consult the Help information available from the FileMerge application.
FILES
/Developer/Applications/Utilities/FileMerge.app
opendiff and FileMerge are installed as part of the Mac OS X Developer Tools.
SEE ALSO
diff(1), diff3(1), cmp(1)
Mac OS X August 3, 2004 Mac OS X