我是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)
后跟常规目标和依赖...
答案 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}
的值。