å½æ们åçç¨åºæ件æ¯è¾å°çæ¶åï¼æ²å
¥gcc
/g++,å½ä½ å¨å¤§åå·¥ç¨ä¸ï¼å¨ä¸ä¸ªä¸ªç¼è¯æ件çè¯ï¼ä½ å¯è½å°±ä¼å¾éé·ãlinuxæä¸ä¸ªèªå¸¦çmakeå½ä»¤ï¼å®è®©ä½ çå·¥ä½çå»äºå¾å¤§çåæ°ï¼ä½æ¯ä½ è¦å¦ä¹ å¦ä½ç¼åmakefileæ件ã
makefileæ¯ä¸ç§ç¹æ®çæä»¶æ ¼å¼ï¼ä»å°ä¼å¸®ä½ èªå¨ç®¡çä½ ç项ç®ï¼å¾å¼ºå¤§ã
ä¸é¢éè¿å®ä¾ä¸æ¥æ¥è®²è§£å¦ä½ä½¿ç¨makefileãä¸é¢çå段代ç ã
[cpp] view
plaincopyprint?
/////main.cpp
#include "functions.h"
int main()
{
print_hello();
cout << endl;
cout << "The factorial of 5 is " << factorial(5) << endl;
return 0;
}
///hello.cpp
#include "functions.h"
void print_hello()
{
cout << "Hello World!";
}
///factorial.cpp
#include "functions.h"
int factorial(int n)
{
if(n!=1)
{ return(n * factorial(n-1)); }
else return 1;
}
//functions.h
void
print_hello();
int factorial(int n);
/////main.cpp
#include "functions.h"
int main()
{
print_hello();
cout << endl;
cout << "The factorial of 5 is " << factorial(5) << endl;
return 0;
}
///hello.cpp
#include "functions.h"
void print_hello()
{
cout << "Hello World!";
}
///factorial.cpp
#include "functions.h"
int factorial(int n)
{
if(n!=1)
{ return(n * factorial(n-1)); }
else return 1;
}
//functions.h
void
print_hello();
int factorial(int n);
请å°ä»¥ä¸æ件æ¾å°ä¸ä¸ªç®å½ä¸ã
请注æ: æç¨çæ¯g++è¿è¡ç¼è¯çï¼ä½ ä¹å¯ä»¥æç
§ä½ èªå·±çéæ©æ¥ç¼è¯ç¨åº
makeçä½ç¨
å¦æä½ è¿è¡ï¼ makeå½ä»¤ï¼
å®å°ä¼èªå¨çå¨ä½ çç®å½ä¸å¯»æ¾makefileæ件ï¼ç¶åæ§è¡å®ï¼å¦æä½ å 个makefileæ件ï¼ä½ å¯ä»¥æå®æä¸ä¸ªç¹å®çmakefileæ件
使ç¨å¦ä¸å½ä»¤ï¼
make -f mymakefile
å¦æä½ æ³ç¥éæ´å¤çmake ç¨æ³ï¼å¯ä»¥æ§è¡man make å½ä»¤
æ§è¡è¿ç¨
ç¼è¯å¨å°ä¼ç¼è¯ä½ çæºæ件ï¼ç¶åè¾åºç®æ æ件
é¾æ¥å¨æ§è¡ç®æ æ件ç¶åå建ä¸ä¸ªå¯æ§è¡æ件ã
æå¨ç¼è¯
æä¸çæ³çä¸ç§æ§è¡æ¹å¼å°±æ¯
g++ main.cpp hello.cpp factorial.cpp -o hello
akefile åºæ¬è§å
makefileçåºæ¬è§åæ¯æ以ä¸ææï¼
target: dependencies
[tab] system command
å©ç¨ä»¥ä¸è¯æ³ç¼åå¦ä¸
all:
g++main.cpp hello.cpp factorial.cpp -o hello
ç¶åè¿è¡ä½ çmakefileï¼å¦ä¸
make -f Makefile-1
å¦ä¸ä»£ç åè¿°ï¼æåçç®æ æ¯allï¼allæ¯makefileé»è®¤çç®æ ï¼å¦æ没æå
¶ä»è§å®ï¼makeè¯æ³å°è¦æ§è¡è¿ä¸ªç®æ æ件ã
æ们è¿åç°ï¼all ç®æ 并没æä¾èµçï¼æ以æç
§å½ä»¤è®©ä»å®å
¨çæ§è¡ã
æåï¼make éè¿ æ们ç»çå½ä»¤è¿è¡ç¼è¯ç¨åº
使ç¨ä¾èµ
è¿æ¯å 为,å¦æä½ ä¿®æ¹ä¸ä¸ªåç¬çæ件å¨ä½ ç项ç®,ä½ ä¸å¿
éæ°ç¼è¯ä¸å,åªæä½ ä¿®æ¹ã 请çä¸è¾¹çä¾å
[plain] view
plaincopyprint?
all: hello
hello: main.o factorial.o hello.o
g++ main.o factorial.o hello.o -o hello
main.o: main.cpp
g++ -c main.cpp
factorial.o: factorial.cpp
g++ -c factorial.cpp
hello.o: hello.cpp
g++ -c hello.cpp
clean:
rm -rf *o hello
all: hello
hello: main.o factorial.o hello.o
g++ main.o factorial.o hello.o -o hello
main.o: main.cpp
g++ -c main.cpp
factorial.o: factorial.cpp
g++ -c factorial.cpp
hello.o: hello.cpp
g++ -c hello.cpp
clean:
rm -rf *o hello
æ们çå°ç®æ all
åªæä¾èµï¼æ²¡æç³»ç»å½ä»¤ã为äºå»æ§è¡æ£ç¡®ï¼å®å¿
须满足ææçç®æ æä¾èµçãç®æ é½åå»æç´¢ææçä¾èµï¼ç¶åå»æ§è¡å®ã
å¨ä¾åä¸ï¼æ们çå°äºcleançç®æ ï¼clean è¿ä¸ªç®æ å°±æ¯æ¸
æ¥ä¸é´çæç.oæ件åé£äºå¯æ§è¡æ件
使ç¨åéå注é
å½ä½ åmakefilæ件çæ¶åï¼å½ä½ æ³æ¹åä¸äºç¼è¯çä¸äºé项çæ¶åï¼ä»æ¯é常æç¨å¤çã
[plain] view
plaincopyprint?
# è¿æ¯æ³¨éï¼CC ç¼è¯å¨.
CC=g++
# CFLAGS æ¯é项
CFLAGS=-c -Wall
# ç®æ æ件
OBJECTS=main.o factorial.o hello.o
all: hello
hello: $(OBJECTS)
$(CC) main.o factorial.o hello.o -o hello
main.o: main.cpp
$(CC) $(CFLAGS) main.cpp
factorial.o: factorial.cpp
$(CC) $(CFLAGS) factorial.cpp
hello.o: hello.cpp
$(CC) $(CFLAGS) hello.cpp
clean:
rm -rf *o hello
# è¿æ¯æ³¨éï¼CC ç¼è¯å¨.
CC=g++
# CFLAGS æ¯é项
CFLAGS=-c -Wall
# ç®æ æ件
OBJECTS=main.o factorial.o hello.o
all: hello
hello: $(OBJECTS)
$(CC) main.o factorial.o hello.o -o hello
main.o: main.cpp
$(CC) $(CFLAGS) main.cpp
factorial.o: factorial.cpp
$(CC) $(CFLAGS) factorial.cpp
hello.o: hello.cpp
$(CC) $(CFLAGS) hello.cpp
clean:
rm -rf *o hello
ä½ å¯ä»¥çå°ï¼ä½¿ç¨è¿äºææ¶åæ¯é常æç¨çãä½ å¯ä»¥ä½¿ç¨å®ä»¬ï¼èµå¼ï¼å½ä½ æ³æ¹åä¸äºåéå¼çæ¶åï¼ç¶åä½ å¯ä»¥ä½¿ç¨$(var),
æ¥åºç¨è¿äºåé
å¦ä½ç»§ç»ä¸å»
éè¿ä»¥ä¸ç®è¦çä»ç»ï¼ä½ å°±å¯ä»¥ç®è¦çå»ç¼åä¸äºæ´å å¤æçmakefileæ¥è¿è¡ä½ çå¤æçç¨åºäºãä¸è¾¹è®²çåªæ¯å°å±±ä¸è§
ï¼ä½ å¯ä»¥éè¿å·®ä¸äºmakeçææ¡£æ¥åã
[plain] view
plaincopyprint?
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) {1}lt; -o $@
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) {1}lt; -o $@
éè¿ä»¥ä¸ç®è¦çä»ç»ï¼ä½ å°±å¯ä»¥ç®è¦çå»ç¼åä¸äºæ´å å¤æçmakefileæ¥è¿è¡ä½ çå¤æçç¨åºäºãä¸è¾¹è®²çåªæ¯å°å±±ä¸è§
ï¼ä½ å¯ä»¥éè¿å·®ä¸äºmakeçææ¡£æ¥åã
温馨提示:答案为网友推荐,仅供参考