Sponsored Content
Top Forums UNIX for Dummies Questions & Answers make and clean in a single rule in the makefile. Post 70159 by vino on Tuesday 26th of April 2005 01:01:03 PM
Old 04-26-2005
make and clean in a single rule in the makefile.

Hi,

This stems from the following thread https://www.unix.com/shell-programming-and-scripting/18299-makefile-not-taking-d-flags.html

I have a makefile which makes either executables or a shared library.
i.e. make -f unix.mak will create the executables and
make -f unix.mak libolsv will create the shared library.

Since these have to be made i.e both executable and the shared library, I need to make the executables and then a clean ( make -f unix.mak cleanobj) and then make the shared library.

But I want to avoid the intermediate step of make -f unix.mak clean; i.e. the user should not do it explicitly. Is there any way I can include it in the rule for the shared library.

This is what I have.

Code:
SO              = SvSocket.o SvStmt.o SvOdbcWrapper.o \
                  OdbcCallReader.o MgrCalls.o OdbcSvProxy.o

$(EXE1): $(EXE) $(O1)
        g++ $(CFLAGS) -o $(EXE1) $(O1)

$(EXE): $(O) *.h
        $(CC) -o $(EXE) $(O)

OdbcSvApp.o: OdbcSvApp.cpp
        $(CC) -DODBCSV_SO OdbcSvApp.cpp -c -o OdbcSvApp.o

$(DAEMON_SO): OdbcSvApp.o $(SO) *.h
        $(CC) -shared -export-dynamic -DODBCSV_SO -o $(DAEMON_SO) OdbcSvApp.o $(SO) 
        @echo $(DAEMON_SO) has been built.

cleanobj::
        -$(RM) *.o

This is what I have tried:
Code:
$(DAEMON_SO): OdbcSvApp.o $(SO) *.h
        -make -f unix.mak cleanobj
        $(CC) -shared -export-dynamic -DODBCSV_SO -o $(DAEMON_SO) OdbcSvApp.o $(SO)

and also this
Code:
$(DAEMON_SO): OdbcSvApp.o $(SO) *.h
        -$(RM) *.o
        $(CC) -shared -export-dynamic -DODBCSV_SO -o $(DAEMON_SO) OdbcSvApp.o $(SO)

and I get the following error in both the cases:

gcc: OdbcSvApp.o: No such file or directory
gcc: SvSocket.o: No such file or directory
gcc: SvStmt.o: No such file or directory
gcc: SvOdbcWrapper.o: No such file or directory
gcc: OdbcCallReader.o: No such file or directory
gcc: MgrCalls.o: No such file or directory
gcc: OdbcSvProxy.o: No such file or directory
make: *** [libolsv20.so] Error 1

So how do I get around this. I want to include the clean rule in $(DAEMON_SO)

Vino
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Clean file in single action

What one finds challenging another finds simple... (HPUX B.11.11) I have a text file named something like 12345.dst that could look like this: DOG CAT NONE TEST CAT What I want to end up with is 12345.dst looking like this: CAT DOG TEST removing "NONE" should it be there and... (1 Reply)
Discussion started by: djp
1 Replies

2. Shell Programming and Scripting

To make sure I don't violate rule #7

I am hoping to find out if it is possible to use some sort of UNIX programming/scripting tools to solve a problem I have with reformatting email messages that are sent out of my IBM UNIX (AIX) system. I'm thinking some advanced awk/sed may work I do not have the time or the ability to do this... (6 Replies)
Discussion started by: toddk
6 Replies

3. Shell Programming and Scripting

Makefile rule being skipped

I can't seem to get a rule in my Makefile to ever run... even if I change the rule to force make to re-enter the rule, or if I change the dependent files the rule depends on. Any ideas why the second rule is being ignored here? #MAKEFILES = $(DIRS:%=$(ROOT)/%/Makefile) #$(MAKEFILES):... (0 Replies)
Discussion started by: foureightyeast
0 Replies

4. Programming

A question about Makefile run by GNU make

Hello everybody, Currently I'm learning how to build projects (C programming) with GNU make. I have a problem with one Makefile and I would appreciate if you could kindly give me a hand. Here is the environment: OS: Redhat linux 5 compiler: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)... (2 Replies)
Discussion started by: dariyoosh
2 Replies

5. Programming

Issue with make, no rule to make target etc.

I have been trying to split up my src directory to clear out files that are not re-compiled very often. Now I have the following setup in my trunk, trunk/bld trunk/src/ trunk/src/src_server trunk/makefile.linux In the make file, I have compile rules SOURCELOC = src # compile src c++... (4 Replies)
Discussion started by: LMHmedchem
4 Replies

6. Shell Programming and Scripting

Need help with a script to make makefile

How do we create a shell script that creates a makefile? what if we want to use the #include header files too? (2 Replies)
Discussion started by: sslokhan
2 Replies

7. UNIX for Dummies Questions & Answers

Defining a new suffix rule in a Makefile

Hi everybody, I have a Makefile where a single suffix rule is defined: .SUFFIXES: .cpp .cpp.o: ${CXX} ${CXXFLAGS} -c -o $@ $< And I'd like to create another where an additional flag is added to compile in SMP. Right now, I have to do it like this: interface-smp.o:... (2 Replies)
Discussion started by: Zel2008
2 Replies

8. Programming

Makefile No rule to make target

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

9. Shell Programming and Scripting

Default rule to be executed in makefile

Hi all, I want to know the entry point (default rule to be executed) in a makefile once all defined variables are evaluated. I do not have all: in my makefile and I give "make" without any parameter in command line. thanks........ (3 Replies)
Discussion started by: useless79
3 Replies

10. Solaris

SunOS 5.5.1 usage of Makefile command in make file

I am new to Solaris and compilation using make files. I have a code base which is organized into different folders. At the root folder is a master make file and in the sub directories, there are make files for that particular folder. In the make files present in subdirectories, I am seeing... (2 Replies)
Discussion started by: rajujayanthy
2 Replies
cxref-cpp(1)						      General Commands Manual						      cxref-cpp(1)

NAME
cxref-cpp - A modified C preprocessor to use with cxref. SYNOPSIS
cxref-cpp ... DESCRIPTION
To improve the output that is available for the source code for cross-referencing a modified version of the GNU CPP v2.7.2 is supplied (named cxref-cpp). This modified C preprocessor allows for a finer control over some features of the preprocessing that are not important for a compiler. In a standard preprocessor, the preprocessor directives are intended for use only by the preprocessor, so passing the information through is not important. With cxref-cpp, there are some features that are different to the standard GNU CPP: Compared to gcc versions earlier than version 2.8.0 there is an extra option that will output the #include lines from the source file. In version 2.8.0 and later this option is present. Comments trailing a #include or a #define are not preserved by all versions of gcc even if the -C option is used. This is not important while compiling, but is useful for documenting. The cxref-cpp program will take on the personality of the installed version of gcc so that the gcc header files can be parsed. This means that it includes the same default include directory paths and macro definitions. The file that contains these definitions is called cxref-cpp.defines and is installed by the cxref-cpp-configure program or specified by the -cxref-cpp-defines command line option. OPTIONS
The same as for gcc, apart from '-cxref-cpp-defines' described above. SEE ALSO
cxref(1), cxref-cpp-configure(1), gcc(1) May 9, 2004 cxref-cpp(1)
All times are GMT -4. The time now is 06:44 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy