您的位置:首页 > 其它

scintilla例子程序makefile_vc 文件的分析

2014-10-30 22:47 218 查看
# Make file for DMApp, a small demonstration application

# for the SciLexer DLL.

# This file should be in a directory which is a peer of the scintilla

# directory so Scintilla.h and SciLexer.h files can be found

CC = cl

RC = rc

LD = link

O = obj

# windows makefile 定义变量。

PROGDEMO = DMApp.EXE

# 终极目标是生成:DMApp.EXE。

ALL: $(PROGDEMO)

# 对于十分有把握的删除操作,并不需要逐一确认的,可以选择静默删除模式,

# 这时候,需要使用参数:/q,也就是 quiet 的缩写形式。

clean:

del /q *.exe *.obj *.res

# 对每个要忽略的库可以使用 /NODEFAULTLIB,以通知链接器忽略错误的运行时库。

LDFLAGS = /NODEFAULTLIB:LIBC KERNEL32.lib USER32.lib GDI32.lib COMDLG32.lib WINMM.lib COMCTL32.lib ADVAPI32.lib IMM32.lib SHELL32.LIB OLE32.LIB

# /Tc 选项指定 filename 为 C 源文件,即使它没有 .c 扩展名。

# /Tp 选项指定 filename 为 C++ 源文件,即使它没有 .cpp 或 .cxx 扩展名。

# 选项和 filename 之间的空格是可选的。每个选项指定一个文件;若要指定其他文件,请重复此选项。

# /TC 和 /TP 是 /Tc 和 /Tp 的全局变量。它们指定编译器将在命令行上命名的所有文件

# 视为 C 源文件 (/TC) 或 C++ 源文件 (/TP),而不考虑它们在命令行上相对于选项的位置。

# 这些全局选项可通过 /Tc 或 /Tp 在单个文件上重写。

# 默认情况下,CL 假定扩展名为 .c 的文件是 C 源文件,扩展名为 .cpp 或 .cxx 的文件是 C++ 源文件。

# /MD、/MT、/LD(使用运行库)

# 允许您指示多线程模块是否是 DLL,并可以选择运行库的零售版本或调试版本。

# /MD 使应用程序使用运行库的多线程并特定于 DLL 的版本。

# 定义 _MT 和 _DLL,并使编译器将库名 MSVCRT.lib 放入 .obj 文件中。

# 用此选项编译的应用程序静态链接到 MSVCRT.lib。此库提供允许链接器解析外部引用的代码的层。

# 实际工作代码包含在 MSVCR100.DLL, 中,该库必须在运行时对于与 MSVCRT.lib 链接的应用程序可用。

# /Ox(完全优化) :使用 /Ox 编译器选项可以优先选择生成执行速度更快的代码而不是大小更小的代码。

CXXFLAGS = /TP /MD /Ox

# !可能是shell的语法,我理解等同于C++中的#ifdef.

# /Z7、/Zi、/ZI(调试信息格式)

# 选择为程序创建的调试信息的类型,并选择是将此信息保存在对象(.obj)文件中,还是保存在程序数据库(PDB)中。

# 生成一个程序数据库(PDB),其中包含供调试器使用的类型信息和符号化调试信息。

# 符号化调试信息包含变量的名称和类型以及函数和行号。

# /Zi 不影响优化。但是,/Zi 的确暗示了 /debug;有关更多信息,请参见 /DEBUG(生成调试信息)。

!IFDEF DEBUG

CXXFLAGS=$(CXXFLAGS) /Zi

LDFLAGS=/DEBUG $(LDFLAGS)

!ENDIF

# 隐含规则可以为某一类的文件指出建立的命令,它具体定义了如何将带一个特定扩展名的文件转换成具有另一种扩展名的文件,

# 定义的格式是:

# .源扩展名.目标扩展名:;命令 (方法1)

# 目标文件:依赖文件 (方法2)

# 命令

# 规则可以用两种方法,用方法2的时候,命令可以从第二行开始,第一行的“;”省略,

# 但是这时命令前面必须有一个Tab字符,否则nmake无法区分这究竟是命令还是别的定义。

.cxx.$(O):

$(CC) /I ..\scintilla\include $(CXXFLAGS) -c $*.cxx -o $@

.rc.res:

$(RC) $*.rc

DMApp.o: Scintilla.h SciLexer.h resource.h

$(PROGDEMO): DMApp.obj DMApp.res

$(LD) DMApp.obj DMApp.res $(LDFLAGS)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: