vs2017搭与传统vs2017上的windows编程不同的是,vs2017 所需要的Linux环境需要搭载在一个linux的服务器上,vs 2017 相当于将windows系统和这个linux系统之间建立了某种映射,可以将代码拷贝到linux中对应的目录中,并且windows系统中的vs 2017能够看到运行的情况,甚至是对代码进行断点调试。
开发环境
window10操作系统
vs2017 community版
VMware12.5.0 build-4352439
在VMware中安装Ubuntu 14.04.6 LTS
vs2017的安装
从官网下载最新的vs2017,官网https://visualstudio.microsoft.com/,在安装的过程中需要勾选“使用c++的linux开发”工具集,搭建linux c++环境;
已安装vs2017的,菜单栏选择 工具->获取工具和功能;
如果是离线安装且无法联网的电脑,卸载掉vs2017后,重新安装,很有可能vs2017找不到离线安装包
配置ubuntu环境
在ubuntu中安装好c++环境,因为vs2017需要通过ssh登陆ubuntu系统,所以也需要安装好ssh服务,命令如下:
sudo apt-get install openssh-server g++ gdb gdbserver
开始ssh服务:
sudo service ssh start
vs2017创建linux项目
打开vs2017,菜单栏选择 文件->新建项目->跨平台->linux->控制台应用程序(linux),如图2:
新建完成后,vs2017自动生成一个简单的helloworld.cpp(划掉)main.cpp文件
菜单栏选择 调试->选项->跨平台->添加,如图3,将Ubuntu信息填入。其中主机名填入IP,如果只有一个Ubuntu可以填入Ubuntu的device name,点击右上角退出按钮->About This Computer,可以查看Ubuntu的device name(默认为ubuntu)。
右键项目 属性->配置属性->常规->远程生成计算机,选择刚刚新建的账户,可以看到,在该页面下,默认的远程生成根目录在"~/projects"下面,待会儿可以看到在ubuntu对应的目录下会生成项目的代码。
以上部分设置好后,每次新建项目均不需要更改,以下部分每次新建项目都需要重新根据需求配置
vs2017高级保存选项设置
vs2017和linux的中文字符集编码及换行符是不同的,需要更改vs2017的字符集编码和换行符,否则打印中文会出现乱码,编译时出现奇怪的报错。vs2017的字符集设置在“高级保存选项”命令中,而“高级保存选项”是隐藏起来的,首先需要添加“高级保存选项”命令。
菜单栏选择 工具->自定义->命令。“高级保存选项”是一个命令可以放在菜单栏中任意选项中,我选择放在文件菜单中,在菜单栏选择文件,点击添加命令,如图6所示(由于我已经添加了,在图6中可以看到“高级保存选项”这个命令)。
弹出添加命令框后,选择文件->高级保存选项,点击确定,如图7,然后上下移至自己喜欢的位置。
打开刚添加的高级保存选项,编码选择Unicode(也可以选择Unicode带签名的,即UTF-8-BOOM,这种更好),行尾选择Unix(LF),如图8:
包含目录配置
包含目录(头文件所在文件夹)在linux上配置好了环境变量,在vs2017中依然报头文件不存在的错误,因为它们在两个不同的系统上,vs2017不会直接获取中的环境变量,一般来说/usr/local/include中的头文件会拷贝过来,放到一个说不清的文件夹中,我的头文件拷贝目录如下:
C:\Users\Administrator\AppData\Local\Microsoft\Linux\HeaderCache\1.0\-574161832
首先要让vs2017把你的头文件拷贝过来。右键项目 属性->配置属性->VC++目录->包含目录,在包含目录中填入头文件目录,如图9,点击确定,右键项目 重新扫描解决方案,vs2017自动将/usr/local/include下的文件及文件夹拷贝过来,拷贝过来后就可以从包含目中删除了(过河拆桥)。
如果该头文件没有在linux中设置环境变量包含的话,需要在编译时指定目录,即-I命令,右键项目 属性->配置属性->C/C++->常规->附加包含目录,如图10。点击应用/确定后,可以在命令行中可以找到-I命令(我拷贝过来的头文件目录过多就不截图了)。
如果拷贝到Windows过多的头文件,且多个头文件会有冲突,比如linux和arm的头文件、多版本,记得用排除目录,去掉不需要有冲突的目录。
库文件配置
库文件不需要拷贝到Windows(它也用不了(;¬_¬)),在编译时依然需要添加-l命令指定需要用到的库,-L命令指定库所在的文件夹。
右键项目 属性->配置属性->链接器->输入->库依赖项,添加需要的库,和linux上一样去掉开头的lib和结尾的.so,如图11。右键项目 属性->配置属性->链接器->常规->库附加目录,添加库所在的目录,如图12。点击应用/确定后,可以在命令行中可以找到对应的命令,如图13:
其他
项目类型配置
属性->配置属性->常规->配置类型中,可以选择项目生成的类型,包括动态库.so、静态库.a和应用程序.out
ARM编译配置
只需要 右键项目 属性->配置属性->C/C++->常规->C 编译器/C++ 编译器 和 链接器->常规->链接器 更改为arm-linux-g++(前提是你安装了这个编译器)。更改后vs2017/linux上无法直接运行,这时只能生成应用程序,然后放到arm板上运行。
不要更改解决方案平台为ARM,会报一个错误,错误解决办法未知,如图14。
转载:https://www.bilibili.com/read/cv2245797?from=search