关于makefile的问题:"CFLAGS"和"SHVER"? [英] Questions on makefile: "CFLAGS" and "SHVER"?

查看:159
本文介绍了关于makefile的问题:"CFLAGS"和"SHVER"?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在一个makefile文件中,我发现作者说

In a makefile, I found the author stated that

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

这两行的功能是什么?

这是完整的makefile:

Here is the makefile in full:

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)

推荐答案

这些只是makefile变量. CFLAGS是常用变量,其中包含将传递给C编译器的标志(例如gcc). Makefile变量稍后会扩展,因此当您看到例如

These are just makefile variables. CFLAGS is a commonly used variable which contains flags that will be passed to the C compiler (e.g. gcc). Makefile variables get expanded later, so when you see e.g.

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

这将扩展为:

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

类似地,SHVER是共享库的版本号,因此对于这种依赖关系和构建命令:

Similarly SHVER is a shared library version number, so in the case of this dependency and build command:

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

这将扩展为:

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

这篇关于关于makefile的问题:"CFLAGS"和"SHVER"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆