Makefile中的$(shell imlib2-config --libs)有什么作用?

时间:2014-09-17 07:25:06

标签: shell sed makefile

我是unix / linux世界的新手..目前正试图在我的Windows 7笔记本电脑上运行一个应用程序,该应用程序最初是在unix / linux平台上使用C ++构建的。我遇到了一个Makefile并试图了解它正在尝试做什么。关于Makefile的以下内容正在做什么的任何帮助/指导都非常感谢...提前感谢您的帮助。

CFLAGS := -D_FORTIFY_SOURCE=2 -Wall -W -Wextra -pedantic -Werror -pedantic-errors $(shell imlib2-config --cflags) -O3
LDLIBS := $(shell imlib2-config --libs)
PREFIX := /usr/local
BINDIR := $(PREFIX)/bin
MANDIR := $(PREFIX)/share/man/man1
DOCDIR := $(PREFIX)/share/doc/ssocr
DOCS   := AUTHORS COPYING INSTALL THANKS
VERSION := $(shell sed -n 's/^.*VERSION.*\(".*"\).*/\1/p' defines.h)

后跟常规目标和依赖...

1 个答案:

答案 0 :(得分:2)

该行:

LDLIBS := $(shell imlib2-config --libs)

使用选项imlib2-config运行--libs程序,以便获取应添加到C(或C ++)编译命令行的正确信息,以便正在构建的程序可以获取imlib2定义或使用的库(或库)。程序的输出保存在${LDLIBS}(或$(LDLIBS))宏中。

同样,第一行包含:

$(shell imlib2-config --cflags)

这将运行相同的配置脚本,其中包含使用imlib2库和标头编译代码所需的编译器标志选项,并且输出将保存为${CFLAGS}宏的一部分。< / p>

VERSION行运行sed脚本以从标题defines.h中获取版本信息,其中包含#define VERSION "1.2.3.4"static const char VERSION[] = "2.3.4";等行,并在内部分配材料双引号为make${VERSION}的值。