在 Windows 系统中安装
通常,LCUI 每次版本更新时都会提供编译好的 LCUI 库及依赖库,你可以直接下载使用。如果你出于某些原因(例如:编译64位版本)需要手动编译一次 LCUI,那么请继续阅读以下内容。
编译依赖项
在 Windows 上手动编译安装依赖库比较麻烦,不过,vcpkg 可以解决这种问题,你可以尝试使用它安装这些依赖项。
以下列出了大致的编译方法,源码包可以在它们的官网中下载到,有的项目会提供 VisualStudio 工程文件,你可以直接打开它然后编译生成它,在编译完后需要将它们提供的头文件复制到编译器能找到的目录。
libpng
- 项目主页:http://www.libpng.org/pub/png/libpng.html
- 工程文件:projects/vstudio/vstudio.sln
- 头文件:png.h、pngconfig.h、pnglibconf.h
freetype
- 项目主页:https://www.freetype.org/
- 工程文件:builds/windows/vc2010/freetype.sln
- 头文件:include/ft2build.h、include/freetype
jpeg
- 项目主页:http://www.ijg.org/
头文件:jconfig.h、jmorecfg.h、jerror.h、jpeglib.h
jpeg 库没有提供现成的 sln 工程文件,你需要按照以下步骤手动生成它。打开开始菜单,找到 Visual Studio 的目录
- 打开目录里的 VisualStudio 提供的开发人员命令提示工具
- 在出现的命令窗口中使用 cd 命令切换目录到 jpeg 源码目录
- 运行命令:
nmake -f makefile.vc setup-v15
- 关闭命令窗口
- 在源码目录中可看到生成的 jpeg.sln 文件
如果在运行 nmake 命令后出现提示未找到文件“win32.mak”
,请复制C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
目录下的 win32.mak 文件到 jpeg 源码目录里,然后重试。
libxml2
- 项目主页:http://xmlsoft.org/
- 工程文件:win32/VC10/libxml2.sln
- 头文件:include/libxml
如果你想对 libxml2 进行裁剪,你可以在源码目录里的 win32 目录中运行以下命令:
cscript configure.js
可以看到如下输出:
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。
libxml2 version: 2.9.4
Created Makefile.
Created config.h.
XML processor configuration
---------------------------
Trio: no
Thread safety: native
FTP client: yes
HTTP client: yes
HTML processor: yes
C14N support: yes
Catalog support: yes
DocBook support: yes
XPath support: yes
XPointer support: yes
XInclude support: yes
iconv support: yes
icu support: no
iso8859x support: no
zlib support: no
lzma support: no
Debugging module: yes
Memory debugging: no
Runtime debugging: no
Regexp support: yes
Module support: yes
Tree support: yes
Reader support: yes
Writer support: yes
Walker support: yes
Pattern support: yes
Push support: yes
Validation support: yes
SAX1 support: yes
Legacy support: yes
Output support: yes
XML Schema support: yes
Schematron support: yes
Python bindings: no
Win32 build configuration
-------------------------
Compiler: msvc
C-Runtime option: /MD
Embed Manifest: no
Debug symbols: no
Static xmllint: no
Install prefix: .
Put tools in: $(PREFIX)\bin
Put headers in: $(PREFIX)\include
Put static libs in: $(PREFIX)\lib
Put shared libs in: $(PREFIX)\bin
Include path: .
Lib path: .
其中 FTP 客户端、HTTP 客户端、HTML 处理器等模块是用不到的,可以使用以下命令禁用掉它们:
cscript configure.js ftp=no http=no html=no legacy=no iconv=no catalog=no docb=no modules=no
之后开始编译:
nmake /f Makefile.msvc
文件会输出到 bin.msvc
目录下,这些编译方法在 Readme.txt 文件中有说明。
编译 LCUI
LCUI 主要是在 Windows 系统环境下开发的,你可以使用 VisualStudio 打开 build/windows/LCUI.sln
文件,在编译前,你需要将依赖项的库文件和头文件放在源码目录中的 vendor 目录中,目录结构如下:
vendor/include
vendor/lib
之后,在 VisualStudio 的菜单中选择 生成 -> 生成解决方案
来编译生成 LCUI。如果你用的是其它 IDE,请尝试按该 IDE 的方式创建项目并将源文件添加至项目内,然后配置好依赖项再编译。
安装 LCUI
你可以建立一个专门的目录存放 LCUI 的库文件和头文件,例如:D:/c-dev/
,但如果你的项目需要给其他人编译的话,我们建议你设置一个相对目录,例如在源码目录里建立一个 vendor 目录,这样其他人要编译你的项目时,只需要把 LCUI 库文件和头文件复制到 vendor 目录里,无需手动修改配置。
配置
每次新建 LCUI 应用项目时,你都需要手动为项目修改如下配置。看上去很麻烦,如果你感兴趣可以参考这篇文章为 VisualStudio 添加 LCUI 应用程序模板。
C/C++ > 常规 > 附加包含目录
将该项设置为:
$(SolutionDir)vendor\include
,如果你的 VisualStudio 工程文件不是建立在源码根目录下,例如:/build/windows/project.sln
,那么请手动调整该配置项。链接器 > 常规 > 附加库目录
将该项设置为:
$(OutDir)
,即:将 exe 输出目录作为附加库目录。输入 > 附加依赖项
将该项设置为:
LCUI.lib; LCUIMain.lib
生成事件 > 预先生成事件
将该项设置为:
copy $(SolutionDir)vendor\lib\LCUI*.lib $(OutDir)
copy $(SolutionDir)vendor\lib\LCUI*.dll $(OutDir)
在编译、调试或运行应用时,需要让 lib、dll 文件和 exe 在一个目录,方便链接器能够找到它们。
Windows 通用应用
如果你的应用是 Windows 通用应用,那么你需要在以上配置的基础上再做如下修改。
输入 > 附加依赖项
将该项设置为:
LCUI.lib; LCUIApp.lib
生成事件 > 预先生成事件
将该项设置为:
copy $(SolutionDir)vendor\lib\uwp\LCUI*.lib $(OutDir)
copy $(SolutionDir)vendor\lib\uwp\LCUI*.dll $(OutDir)
LCUI 的 Windows 通用应用版的库文件存放在 uwp 目录里。
文件
右键单击项目名称,然后选择
添加 > 现有项…
,在文件选择器中选择 LCUI.dll 和 LCUIApp.dll 文件。添加后,右键点击这些文件并选择属性
,将常规 > 内容
设置为是
。
完成
至此,你已经知道了 LCUI 的安装和编译方法,以及 LCUI 应用程序项目的配置方法,接下来你可以开始尝试编写 Hello World。