Windows下开发LinuxCC++项⽬
⼀、Windows编辑、编译、调试、运⾏,最终在Linux下编译、运⾏
这是常规⽅法,以前我做的⼏个项⽬都是在Windows下使⽤Visual Studio进⾏编辑、编译、调试、运⾏,Windows下测试没什么问题了,然后在Linux下再编译、部署、运⾏。
这样做有许多好处,借助Visual Studio的强⼤功能,编写、编译、调试代码都会⾮常舒服,不需要使⽤命令⾏去操作这⼀切。但是也有⼀些问题:
1.由于Windows与Linux平台的⼀些API不同,需要维护与处理不同平台的API;
2.由于VS的编译器与GCC编译器有出⼊,会出现VS下可以编译链接通过,但是GCC下会编译链接不过,⽐如不同的C/C++标准,VS对C标准⽀持较全⾯的C89,不⽀持C99或者⽀持不全;对C++标准的⽀持,不同VS版本⽀持的情况不同,可以在微软官⽅查询。
3.字符编码。VS默认情况下只⽀持本地字符编码,对UTF8不⽀持或者⽀持不够;⽽GCC全⾯⽀持UTF8,也可以⽀持本地编码。
1.Windows
VS 2015及以后版本与标准C++的差距越来越⼩,建议使⽤VS 2015及以后版本。
在VS下,我们新建的⽂件⼀般都是本地编码,⽽不是使⽤的UTF8,⽽Linux下默认都是使⽤UTF8编码。为了达到统⼀的运⾏效果,可以在VS 2015中添加
/execution-charset:utf-8
/source-charset:GBK
选项,如图:
2.Linux
Linux下构建项⽬,可以使⽤的⼯具集就⽐较多,⽐较⾃由,但都是⽣成Makefile,然后使⽤make⼯具构建。
1)、使⽤autoconf、automake等配套⼯具⽣成Makefile
2)、使⽤configure脚本⽣成Makefile(很多开源项⽬都使⽤的这个)
3)、使⽤premake⼯具(编写Lua代码组织⼯程⽂件)⽣成Makefile
4)、直接写Makefile
5)、qmake⼯具⽣成Makefile(写qmake⼯程⽂件,还是⽐较好⽤)
6)、使⽤cmake⽣成Makefile
笔者使⽤过后⾯3种,直接写Makefile相对要难⼀些,qmake与cmake相对要容易⼀些。⽬前⽐较流⾏的是cmake,是⼀个跨平台的⼯具,可以⽣成Windows下的VS⼯程,也可以⽣成Makefile和其它⼯程,⾮常强⼤,很多开源软件都在使⽤cmake来构建。
btw:cmake本⾝不⽀持预编译,如果要使⽤预编译可以使⽤模块。
要让Windows VS下编辑的项⽬能在Linux下正常编译、运⾏,需要添加
-finput-charset=GBK -fexec-charset=UTF8
来保证代码中写的字符串统⼀按UTF8来处理,这样就可以在代码中直接写中⽂字符串了。
需要注意的是:GCC使⽤预编译时不同时⽀持-finput-charset=GBK和头⽂件中使⽤#pragma once,否则如果有重复包含某个头⽂件会报错。 所以写头⽂件时,强烈建议使⽤宏检测技术来去除重复包含头⽂件。
⼆、Windows下编辑,远程编译、调试、运⾏
Sysprogs公司出了⼀款Visual Studio插件,可以⾮常⽅便的在Viusal Studio中远程编译、调试、运⾏Linux程序。所以Windows下开发Linux程序,这是⼀个不错的选择,可以避免Windows与Linux API的不同,避免编译器的不同,专⼼开发Linux程序,⽽不管Windows。VisualGDB下调试程序时,需要注意字符串编码问题,由于Linux与GDB默认都是使⽤的UTF8,⽽VS下是使⽤的UTF16,所以默认的VisualGDB调试时查看UTF8字符串时是乱码,如何解决请关注后⾯的博客:
,同时⽀持GCC的libstdc++与Clang的libc++中STL的常⽤容器。
这是我写的⼀个测试程序,可以从图中看出能够正常显⽰map,vector,list,set,string, const char*, char*等等类型。
cmake如何使用祝好!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论