gaylib是一个c++的GUI库,由vczh编写。由于我只安装了vs build tools,没有装ide,又不想安装vs ide,只好用命令行编译。本文介绍使用msvc编译工具编译demo。
编写代码
按照如下链接编写一个demo
http://gaclib.net/doc/current/gacui/running.html
编译
打开“visual studio 开发者命令提示符 x64”,不同版本名字可能不一样,但是都差不多。
切换到代码所在的根文件夹,也就是WinMain.cpp和Main.cpp所在的文件夹。
有两种办法编译,一是直接编译所有文件,并链接成可执行程序;二是将GacUI编译成库,然后再链接。前者方便,但是每个项目都要编译一次库;后者编译步骤比较多,但是可以加快编译速度。
方法一:
直接一条命令搞定,cl会自动编译并链接
cl /EHsc /MD /O1 /bigobj /I .\Lib /I . /D VCZH_DEBUG_NO_REFLECTION /D UNICODE /D _UNICODE /D WIN32 /D NDEBUG /D_WINDOWS Lib\Skins\DarkSkin\*.cpp WinMain.cpp Lib\*.cpp Main.cpp UI\Source\*.cpp DarkSkin.lib User32.lib mincore.lib OneCore.lib Gdi32.lib /Fe: gaa.exe
方法二:
-
编译库,只编译,不链接
cl /c /EHsc /MD /O1 /bigobj /I .\Lib /I . /D VCZH_DEBUG_NO_REFLECTION /D UNICODE /D _UNICODE /D WIN32 /D NDEBUG /D_WINDOWS Lib\Skins\DarkSkin\*.cpp WinMain.cpp Lib\*.cpp
完成后产生
DarkSkin.obj GacUI.obj GacUIWindows.obj Vlpp.obj VlppOS.obj VlppParser.obj VlppReflection.obj VlppRegex.obj VlppWorkflowLibrary.obj WinMain.obj
-
生成静态链接库
lib *.obj
完成后产生
DarkSkin.lib
这时上一步生成的obj文件就没用了,可以删除了。这里请务必先删除再进行下一步,或者第 4 步不要用通配符。 -
编译项目本体
cl /c /EHsc /MD /O1 /bigobj /I .\Lib /I . /D VCZH_DEBUG_NO_REFLECTION /D UNICODE /D _UNICODE /D WIN32 /D NDEBUG /D_WINDOWS Main.cpp UI\Source\*.cpp
完成后产生
HelloWorldPartialClasses.obj HelloWorldReflection.obj Main.obj
-
链接
link /SUBSYSTEM:WINDOWS *.obj DarkSkin.lib User32.lib mincore.lib OneCore.lib Gdi32.lib /OUT:ga.exe
完成后生成
ga.exe
就是最终的程序了