2011-03-30 2 views
0

, 나는 저자는메이크 파일에 대한 질문 : "CFLAGS"및 "SHVER"? 메이크에서

CFLAGS = -Wall -Wconversion -O3 -fPIC 
SHVER = 2 

이 두 줄의 기능은 무엇입니까 밝혔다 발견? 여기

전체에 메이크입니다 :

CXX ?= g++ 
CFLAGS = -Wall -Wconversion -O3 -fPIC 
SHVER = 2 

all: svm-train svm-predict svm-scale 

lib: svm.o 
    $(CXX) -shared -dynamiclib svm.o -o libsvm.so.$(SHVER) 

svm-predict: svm-predict.c svm.o 
    $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm 
svm-train: svm-train.c svm.o 
    $(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm 
svm-scale: svm-scale.c 
    $(CXX) $(CFLAGS) svm-scale.c -o svm-scale 
svm.o: svm.cpp svm.h 
    $(CXX) $(CFLAGS) -c svm.cpp 
clean: 
    rm -f *~ svm.o svm-train svm-predict svm-scale libsvm.so.$(SHVER) 

답변

3

이들은 단지 메이크 변수입니다. CFLAGS은 C 컴파일러 (예 : gcc)에 전달 될 플래그가 들어있는 일반적으로 사용되는 변수입니다. Makefile 변수가 나중에 확장되므로 예를 볼 때 마찬가지로 SHVER

g++ -Wall -Wconversion -O3 -fPIC -c svm.cpp 

명령을 구축이 종속성의 경우 있도록, 공유 라이브러리의 버전 번호입니다 :

lib: svm.o 
    $(CXX) -shared -dynamiclib svm.o -o libsvm.so.$(SHVER) 

이 얻을 것이다

svm.o: svm.cpp svm.h 
    $(CXX) $(CFLAGS) -c svm.cpp 

는 확장 얻을 것이다 다음으로 확장 :

g++ -shared -dynamiclib svm.o -o libsvm.so.2 
+0

쉘 버전 (SHVER) – Dimitri

+0

@Dimitri : 예 - 나머지 메이크 파일을 보지 않고도 사용 방법을 추측하기가 어렵습니다. . –

0

CFLAGS는 컴파일러에 전달할 옵션을 저장하는 데 널리 사용되는 make 변수 이름입니다.

SHVER는 사용되지 않는 변수 이름이지만 일반적으로 사용되거나 생성되는 공유 라이브러리의 버전 번호를 보유합니다. (SH는 공유 용이고 버전은 VER 임)