Makefile help


 
Thread Tools Search this Thread
Top Forums Programming Makefile help
# 1  
Old 09-24-2009
Makefile help

I've copied a C++ project from my old computer to this one, and I am now trying to (without success) compile the project in the same way as I did before. I use Emacs as a text editor and compile with g++. Here is what my makefile looks like:

Code:
CC=g++
CPPFLAGS=-Wall
CPPFLAGS+=-I..
CPPFLAGS+=-lmingw32 -lSDLmain -lSDL
CPPFLAGS+=-mwindows
SRC=main.cpp #../imanip/imanip.cpp #../imanip/imfuncs.cpp
OBJ=$(SRC:.cpp=.o)
OUT=image_test.exe

all: $(OUT)
    rm $(OBJ) #Remove .o

$(OBJ) :
    $(CC) $(SRC) $(CPPFLAGS) -c #Create .o

$(OUT) : $(OBJ)
    $(CC) $(OBJ) $(CPPFLAGS) -o $@ #Link .

And here is what Emacs displays when trying to compile (Edit: just ignore this error and skip down to my second post, since this error was caused by an incorrect installation of SDL!):

Code:
mingw32-make -k 
g++ main.o -Wall -I.. -lmingw32 -lSDLmain -lSDL -mwindows -o image_test.exe
C:\Program1\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lSDLmain
collect2: ld returned 1 exit status
mingw32-make: *** [image_test.exe] Error 1
mingw32-make: Target `all' not remade because of errors.

It says that it can't find -lSDLmain. What does it mean (makefiles are not my strong side), I have installed SDL the way it should be installed (NOT!)? Can you see what is wrong?

Last edited by TriKri; 09-24-2009 at 03:03 AM..
# 2  
Old 09-24-2009
Check 2 things: Did you install the development package of SDL too, and can it be found in the library search path?
# 3  
Old 09-24-2009
Sorry, I just realized that SDL was causing that problem, since I copied the wrong folder by mistake when installing SDL development package (bin folder instead of lib).

Anyway, I corrected that, and that error disappeared. However, I got this error instead:

Code:
mingw32-make -k 
g++ main.o -Wall -I.. -lmingw32 -lSDLmain -lSDL -mwindows -o image_test.exe #Link .
g++: #Link: No such file or directory
mingw32-make: *** [image_test.exe] Error 1
mingw32-make: Target `all' not remade because of errors.

Looks like it has problems with the comment? Why? Shouldn't it totally ignore the comment?

Once again, I am a newbie when it comes to makefiles, this one I basically just tried to mimic from an already existing makefile from another project!

Edit: The strange this is that, if I remove the comment "#Link .", it DOES compile, but it leaves the following message:

Code:
mingw32-make -k 
rm main.o #Remove .o
process_begin: CreateProcess(NULL, rm main.o #Remove .o, ...) failed.
make (e=2): The system cannot find the file specified.
mingw32-make: *** [all] Error 2

CreateProcess failed? And "make (e=2): The system cannot find the file specified", what does this mean?

---------- Post updated at 08:39 AM ---------- Previous update was at 07:57 AM ----------

Now I got it! I'm not programming in Unix/Linux actually, I'm programming in Windows, using mingw. What I forgot is that rm in not a normal windows shell command. I had to install msys! When I installed it and added the bin folder to my path in windows, everything worked perfectly well!

Last edited by TriKri; 09-24-2009 at 03:22 AM..
# 4  
Old 09-25-2009
I'm not sure you can put comments on the same line as commands etc. in makefiles.
# 5  
Old 09-25-2009
Quote:
Originally Posted by Corona688
I'm not sure you can put comments on the same line as commands etc. in makefiles.
It should be possible.

Cited from Tutorial - Makefile:

some makefile statement
# a comment
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Makefile for g++

Hi All, We have moved our OS from Sun Solaris to Linux and also some of the compilers. Our old makefile used to be as below: CC=cc FLAGS=-G -KPIC -DLG_SOLARIS_OS DEFINES=-DSunOS SYSLIBS=-lc .SUFFIXES : .c .c.o : ;$(CC) -c $(FLAGS) $(DEFINES) $*.c -o $*.o ... (3 Replies)
Discussion started by: shash
3 Replies

2. UNIX for Dummies Questions & Answers

MakeFile

Hey everybody, This may be stup*d question for you, but i am new in unix and i wonder how can i make the rules for translating and linking my .c "primjer1.c", "primjer2.c" and "primjer3.c" in makefile. Thank you. (7 Replies)
Discussion started by: jskako
7 Replies

3. Shell Programming and Scripting

Makefile

Dear all, I have a quite simple question about how to manipulate "makefile.am". I intend to: 1. "CFLAGS" and "CXXFLAGS" have no value at all. I know that these values get "-g -O2" by default. On the other hand, when I try to set them as "CFLAGS = " in "makefile.am", I get warning messages... (4 Replies)
Discussion started by: Dandan
4 Replies

4. UNIX for Dummies Questions & Answers

Help with MakeFile

I'm really confused how to use a makefile. Are you supposed to be make a file from emacs called MakeFile and put code in there to compile? I am trying to create a makefile to compile two .cpp files in my current directory to produce two .o files and then link them... What I did was make a... (1 Reply)
Discussion started by: jzhang172
1 Replies

5. Homework & Coursework Questions

Makefile Help

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: I have been trying to make the program swap but i have been getting errors with the makefile such as driver.o:... (1 Reply)
Discussion started by: mgyeah
1 Replies

6. Homework & Coursework Questions

Help with Simple Multi-Level Makefile (Extremely New at Makefile)

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Basically, the prompt is make a makefile with various sub makefiles in their respective subdirectories. All code... (1 Reply)
Discussion started by: Tatl
1 Replies

7. UNIX for Advanced & Expert Users

Makefile executing another Makefile first?

I have 2 libraries in 2 different directories that I build with Makefiles. library B depends on library A. If I modify a .cpp file in library A and run lib B's Makefile can I have B's makefile to automatically rebuild library A? I am now rebuilding A, followed by B... but I'd like B to... (0 Replies)
Discussion started by: wwuster
0 Replies

8. 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

9. High Performance Computing

help with makefile

I am new to creating makefiles. I have several fortran programs in a folder called as "test" and also have several subroutines in another folder (which is inside this test folder) called as libry My makefile is in the folder "test" I want to create a makefile which can access the files in... (2 Replies)
Discussion started by: explorer
2 Replies

10. Programming

about the makefile

can anyone well explain how to create a makefile? especially those commands in the makefile? BTW, what is CFLAG? (2 Replies)
Discussion started by: ligerdave
2 Replies
Login or Register to Ask a Question