生成文件中的$(shell imlib2 config--libs)做什么?

生成文件中的$(shell imlib2 config--libs)做什么?,shell,sed,makefile,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

我是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)
然后是常规目标和依赖项

线路:

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

同样,第一行包含:

$(shell imlib2-config --cflags)
这将运行相同的配置脚本,并使用选项获取编译带有
imlib2
库和头的代码所需的编译器标志,并且输出保存为
${CFLAGS}
宏的一部分


版本行运行
sed
脚本,从标题
defines.h
中提取版本信息,该标题包含一行,例如
#define VERSION“1.2.3.4”
static const char VERSION[]=“2.3.4”
并将双引号内的材料指定为
make
${VERSION}

的值。我对理解前两行和最后一行特别感兴趣。谢谢Jonathan。我后来发现了这一点,还发现imlib2 config是我的Windows7上无法识别的命令。不确定这是否是询问如何在windows 7上安装或配置imlib2的正确位置。我尝试从启蒙版运行基本示例。。。但是得到imlib2 config命令的“没有这样的文件或目录”消息。我之前已将imlib2包解压缩到一个文件夹中,并尝试运行./configure,但出现以下错误/配置:第11行:$'\r':未找到命令。/configure:19行:意外标记附近的语法错误
elif'。/configure:19行:
elif测试-n“${BASH_VERSION+set}”&&(set-o posix)>/de'/null 2>&1;目前正在寻找帮助,以便在安装了Cygwin的windows 7上正确安装和配置imlib2。我的下一步将是让简单和先进的程序从启蒙工作…看来,该项目的主页和来源是可从。看来,
imlib2
只是一个更大项目的一小部分。您可以在上找到源代码的旧版本。构建
imlib2
需要许多先决条件,包括
pkg config
和Freetype。我没有这些在这台机器上(Mac OS X),所以可能还有其他软件包。在不远的过去,我已经在其他Mac电脑上构建了这两个。你必须亲自完成先决条件的过程。在可以找到由/为Cygwin构建的先决条件的地方,使用该构建。如果你做不到,你必须自己建造。