在XStudio中使用clang编译器进行开发
XStudio 使用2020-09-04 12:28:49前提:
1.需要安装XStudio + CDE扩展, 如何安装请看上一篇.
2.windows环境需要安装llvm+clang, 以及mingw( 若不使用make和gdb则可不安装).
步骤:
一, Windows平台.
1.在 XStudio 主菜单点击工具-选项-C/C++套件设置,,新建一个名为 clang( 名字任取) 的套件 , 如下图:
设置clang编译器.
注意:如无需make 和 gdb调试功能,则只需要填写前两个即可.
clang的设置中需要增加附加编译参数:
如下,分别将Winsdk的目录指定给clang.
-isystem "C:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/include"
-isystem "C:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/ucrt"
-isystem "C:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/shared"
-isystem "C:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/um"
-isystem "C:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/winrt"
-isystem "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include"
点击关闭,保存.
2.然后点击XStudio主菜单 文件-新建:
新建一个基于winsdk的窗口程序
点击XStudio主菜单 项目-属性, 选择[项目属性]选项卡, 选择编译套件为上一步新建的clang套件.
为项目选择套件
3. 按F7进行编译:
出现错误:
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_PostQuitMessage,该符号在函数 "__int64 __cdecl WndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64)" (?WndProc@@YA_JPEAUHWND__@@I_K_J@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_BeginPaint,该符号在函数 "__int64 __cdecl WndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64)" (?WndProc@@YA_JPEAUHWND__@@I_K_J@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_EndPaint,该符号在函数 "__int64 __cdecl WndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64)" (?WndProc@@YA_JPEAUHWND__@@I_K_J@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_DefWindowProcA,该符号在函数 "__int64 __cdecl WndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64)" (?WndProc@@YA_JPEAUHWND__@@I_K_J@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_LoadCursorA,该符号在函数 "unsigned short __cdecl MyRegisterClass(struct HINSTANCE__ *)" (?MyRegisterClass@@YAGPEAUHINSTANCE__@@@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_RegisterClassExA,该符号在函数 "unsigned short __cdecl MyRegisterClass(struct HINSTANCE__ *)" (?MyRegisterClass@@YAGPEAUHINSTANCE__@@@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_CreateWindowExA,该符号在函数 "int __cdecl InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YAHPEAUHINSTANCE__@@H@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_ShowWindow,该符号在函数 "int __cdecl InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YAHPEAUHINSTANCE__@@H@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_UpdateWindow,该符号在函数 "int __cdecl InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YAHPEAUHINSTANCE__@@H@Z) 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_GetMessageA,该符号在函数 WinMain 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_TranslateMessage,该符号在函数 WinMain 中被引用
wincpp.obj : error LNK2019: 无法解析的外部符号 __imp_DispatchMessageA,该符号在函数 WinMain 中被引用
这是由于没有链接系统库的原因, 解决方法,点击XStudio主菜单项目-属性. 选择项目设置-依赖库, 将系统库user32 和kernel32 添加其中:
如图:
添加依赖库user32 和 kernel32, 注意前面加上 -l ( 是小写的L 不是I ), 一个一行
关闭,再执行编译/运行.
.
二,Linux 平台
linux平台则简单的多, 安装 clang 以后,打开XStudio主菜单,点击工具-选项, 新建一个套间, 之后只需要把所有设置中gcc/g++换成clang/clang++即可,其他所有设置和上一篇中说到的 gcc 设置完全一致即可.
上一篇:将XStudio用作跨平台的C/C++开发环境下一篇:基于XStudio定制自己的开发环境

