Avatar billede mosquito Nybegynder
09. juli 2003 - 18:29 Der er 9 kommentarer og
1 løsning

setup makefile til brug for c++

hvilken fil er der tale om, hvor ligger den, og hvad skal der rettes.

der er ikke ændret i standardinstallationen af emacs..

har hørt noget om at det er en Makefile, som make refererer til, men hvor ligger den og hvordan sætter jeg den op således at jeg kan ændre compiler fra
g++ filnavn.cpp -o filnavn
til
g++  -c filnavn.cpp -o filnavn.o

ligeledes mangler jeg en shortcut for 'compile' , den er i menuen, men en shortcut er ikke vist.
Avatar billede soreno Praktikant
09. juli 2003 - 22:23 #1
En makefile kunne f.eks. se sådan (filen hedder "makefile") - denne skabelon bruger jeg altid:

# Compiler
CC=g++

# Parameters given to the compiler
FLAGS=-s

# Output filename
OUTPUT="foobar"

# Source files
SRCS="main.cpp"

# Output object files
OBJS="main.o"

# targets
all:
    $(CC) -c $(SRCS) $(FLAGS)
    $(CC) -o $(OUTPUT) $(OBJS) $(FLAGS)

clean:
    rm $(OBJS) $(OUTPUT)
   

Der forudsættes at makefile ligger i samme directory som "main.cpp".

make
eller:
make all
vil så udføre "all" target

make clean
vil udføre "clean" target

Du skal være opmærksom på tabs og spaces.

Brug tabs før kommandoer - ikke spaces !
Brug ikke tabs før andre linier end kommandoer.

Håber ikke jeg har misforstået dig.
Avatar billede mosquito Nybegynder
31. juli 2003 - 02:00 #2
Soreno >> så er jeg tilbage igen. Jeg har prøvet at lave en makefile, som du angiver. Jeg kan  dog umiddelbart ikke se formålet med den. Jeg er stadig linux newbie, hvor længe jeg kan blive ved med at kalde mig det, aner jeg ikke.

Ideen med et script som ovenstående vil være en god ting, hvis ellers jeg kan oprette mange forskellige headerfiler, sourcefiler og en enkelt mainfil.

idag bruger jeg komandoen g++ -c filnavn.cpp -o filnavn.o til at compile uden at linke.
når alle mine filer er compileret, linker jeg med komandoen g++ fil1.o fil2.o main.o -o main

det giver en masse tasterier når der skal compileres og testes. Jeg ved at kdevelope anbefales af linuxbrugere, men e-macs synes jeg godt om idet det kan anvendes til de fleste programmeringssprog, herved er der kun et miljø jeg skal have kendskab til. Men et script der kan tage ikke forud defineret filnavne og skabe et output, vil løse meget.

Håber jeg har gjort mig forståelig.
Avatar billede segmose Nybegynder
31. juli 2003 - 12:59 #3
I emacs mener jeg du bare kan trykke ctrl-x ctrl-e (check før brug) for at køre make, så mangler du bare at udfylde makefile med dine filer.

# Source files
SRCS="fil1.cpp fil2.cpp main.cpp"

# Output object files
OBJS="fil1.o fil2.o main.o"
Avatar billede mosquito Nybegynder
07. august 2003 - 21:33 #4
jeg har leget lidt med det og har stadig ikke forstået ideen bag denne makefile som Soreno anvender. eller skal det forståes sådan at man ændrer i sin makefil hver gang man vil tilføje endnu en object type. Det jeg forventede var at makefil tager et vilkårligt input afhængig af behov.. fra starten af et programs udvikling kendes jo ikke altid alle dets object typer...
Avatar billede soreno Praktikant
08. august 2003 - 08:45 #5
Ideen er at du pakker compileringen (og linkning, installation, uninstall og hvad man nu ellers kunne finde på) ind i en makefile.

Når jeg så vil installere dit program henter jeg din source og din makefile.
Så behøver jeg ikke bekymre mig om hvordan det skal compilres - det har du jo ordnet for mig ! :-)
Avatar billede mosquito Nybegynder
08. august 2003 - 13:10 #6
Soreno >> ok, det lyder jo til at være ret hensigtsmæssig. Men... det jeg søger er en måde at omgå det at skulle skrive hele g++ -c minfil.cpp -o minfil.o hver gang jeg vil comilere.. og g++ fil.o fil.o fil.o osv -o

jeg ved der findes et KDevelope miljø under KDE, men jeg bruger Gnome og forsøger at anvende emacs til editor og har ikke kunnet finde en løsning til opsætning af emacs indbygget compiler, hvorfor jeg bruger en konsol hver gang jeg skal compilere og til sidst linke og skabe den eksekverbare fil. Jeg må indrømme at linux er en tidsrøver indtil man har fundet de små tricks... håber at du har en ide til mit problem/opgave
Avatar billede soreno Praktikant
08. august 2003 - 13:20 #7
Jeg kan ikke lige huske hvordan man kommer i "command mode" i emacs, men når du er det kan du skrive
:make

så kører emacs din makefile.

(Jeg er selv til vim).
Avatar billede mosquito Nybegynder
08. august 2003 - 13:37 #8
ok, så er det makefilen som jeg stadig ikke helt kan se ideen i, under udvikling af systemet. Det kommer jo løbende filer til, og disse skal så inkluderes i denne makefile. Findes der ikke en form for joker, så jeg ikke skal taste alle mulige datatyper i denne makefile. Således at at makefile selv finder ud af at koble cpp og o til ekstension? Det er selve udviklingsforløbet og test af nye datatyper, som jeg ønsker simplificeret
Avatar billede soreno Praktikant
09. august 2003 - 08:47 #9
Jeg mener du kan bruge reg.exp. til definering af filer.

En makefile er egentlig bare en avanceret "bat" fil. Så alt hvad du kan gøre i et shellscript kan du gøre i en makefile.
Avatar billede mosquito Nybegynder
10. august 2003 - 10:17 #10
jeg takker for den energi der er lagt i spørgsmålet. Mht compile i emacs anvendes M-x compile.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester