前言:
前些日子,在centos捣鼓C++程序,6.5版本的GCC4.4实在太旧了,不支持C++11,官方说得升级到GCC4.7以上。于是乎,尝试更新GCC,一顿操作猛如虎,一看战绩0/5。。。不成功,便成仁,一气之下,整了个Centos8.2。这下子,舒服了,舒服了,看着代码可算是有点现代C++的感觉咯。
后来,公司老哥推荐了VS2019编译LinuxC++,好奇心上来了,操作一番,终于成功。先来康康成果 ^ - ^:
来看详细步骤:
1、操作环境
Win10+VS2019、VMware12+Centos8.2、FinalShell3.0
这里就不赘述VS和VMware以及Centos、跳板的安装了,教程很多。我们直接切入正题,gogogo!
2、创建VS的Linux工程
a.创建空解决方案:
b.添加新的linux工程
3、连接目标机linux
工具-选项-跨平台-连接管理器-添加:
连接成功后,查看centos的编译配置路径,可在此路径下查看工程文件:
4.准备完毕,来测试一段简单的单例程序:
a.准备两个类CStudent和CStudentManage:
/*
Student.h
*/
#pragma once
#include <string>
#include <vector>
using namespace std;
class CHunter
{
public:
CHunter(string nm,int idd,int agg)
:name(nm),
id(idd),
age(agg)
{
}
public:
string name;
int id;
int age;
};
/*
StudentManager.h
*/
#pragma once
#include "Hunter.h"
class CHunterManager
{
public:
CHunterManager();
~CHunterManager();
void Init();
void GetAllData(vector<CHunter>& arr);
private:
bool m_bInited;
vector<CHunter> m_arr;
};
CHunterManager* GetHunterMgr();
/********************分割线*********************/
/*
StudentManager.cpp
*/
#include "HunterManager.h"
CHunterManager::CHunterManager()
{
m_bInited = false;
Init();
}
CHunterManager::~CHunterManager()
{
}
void CHunterManager::Init()
{
if (!m_bInited)
{
m_arr.clear();
m_arr.push_back(CHunter("Gon", 1, 12));
m_arr.push_back(CHunter("Killua ", 2, 12));
m_arr.push_back(CHunter("Kula", 3, 15));
m_arr.push_back(CHunter("Leiouli", 4, 18));
m_bInited = !m_bInited;
}
}
void CHunterManager::GetAllData(vector<CHunter>& arr)
{
arr.clear();
arr.assign(m_arr.begin(), m_arr.end());
}
CHunterManager* GetHunterMgr()
{
static CHunterManager mgr;
return &mgr;
}
b.主程序调用:
#include <iostream>
#include "HunterManager.h"
void Show(vector<CHunter>& arr);
int main()
{
vector<CHunter> arr;
GetHunterMgr()->GetAllData(arr);
Show(arr);
cout << "\n\n" << endl;
cin.get();
return 0;
}
void Show(vector<CHunter>& arr)
{
for (auto it:arr)
{
cout << "\t" << it.name << "\t" << it.age << "\t" << it.id << endl;
}
}
c.编译成功:
现在来FinalShell看看linux上的文件:
四个文件对应VS工程下的四个文件:
d.运行既可以通过VS,也可以去Centos敲命令:
VS运行:
linux运行:
运行bin目录下生成的.out程序
e.修改源文件的问题。
重新编译后,猜测VS会向linux发送rm -rf ./SingleTon指令,然后再创建新的工程目录以及里面的文件。
感受:可视化果然还是舒服啊,VS不亏宇宙第一IDE。香,真香!
参考资料:
https://blog.csdn.net/mmmsss987/article/details/103518996