CLion远程开发Ubuntu,并显示helloworld文字框

1.CLion的介绍以及其在远程开发上的优点

1)CLion 是一个由 JetBrains 开发的跨平台 C/C++ 集成开发环境(IDE),功能强大。

2)CLion的优点:

  1. 远程工具链支持:CLion 支持通过 SSH 连接到远程 Ubuntu 服务器,让开发者可以在本地机器上使用 IDE,而实际的编译和运行则在远程服务器上完成。

  2. 代码编辑和调试:在 CLion 中可以直接编辑远程服务器上的代码,并通过其强大的代码分析和重构工具提高开发效率。同时,CLion 还支持远程调试功能,可以在本地 IDE 中调试远程应用。

  3. CMake 项目支持:CLion 原生支持 CMake,这是许多 C/C++ 项目的构建工具。你可以轻松配置远程项目的构建环境,进行编译和生成。

  4. 版本控制集成:CLion 集成了 Git、SVN 等版本控制工具,方便开发者在远程项目中进行版本管理和协作。

  5. 智能补全和提示:CLion 提供的智能代码补全、代码导航和文档查看功能可以提高开发效率,即使是在远程开发的情况下。

  6. 终端和工具窗口:CLion 具备内置终端,可以方便地在 IDE 内使用命令行工具,与远程开发环境进行交互。

通过这些功能,使得CLion成为我们远程开发Linux的首选IDE。

2.所使用的Ubuntu介绍

本实验所使用的是加载了qt环境的14.0的乌班图版本,具体加载qt环境就不多描述,这里仅仅提供CLion远程开发的连接以及运行出helloworld文字框。

3.CLion远程开发连接步骤

     1)打开图片中的设置(Setting)

2)然后在构建、执行、部署中,进入工具链,后点击加号(我这里已经创建了,不做参考)

3)选择远程主机

4)在按照图中点击

5)点击加号后,会出现图中所示界面

6)这里的主机填虚拟机ifconfig后所示的IP地址

用户名与密码是登录入该乌班图界面的密码。配置好密码后,测试链接。

7)测试链接成功后,就是下图状态,还有如果CMake报错,显示远程开发cmake找不到,我这里是因为换了一个cmake-3.0.1,把之前的内容删除后填入cmake,就会自动检测,成功之后就可以继续使用了。

8)之后在部署里继续创建SFTP文件

9)此时可以通过下图的步骤选择之前已经链接好的SSH,测试。

10)测试成功后,进入映射

10)本地路径就是本机Windows所在的路径,而部署路径是在Linux里面,我们要编译和运行的文件都在处在部署路径里的Linux文件执行。

11)完成以上步骤之后,我们已经完成了80%的任务了,接下来就是打开CLion终端中的本地

注意:远程开发一定要在“本地”编译,我试了一下,在我图中的csgec@xxxxxxxx中找不到映射的文件

12)输入ssh [账号]@[主机ip],到这里我们的远程开发的连接板块已经完成,接下来的就是将minigui的开发文件helloworld通过CLion在ubuntu上进行上传并编译

4.helloworld界面编译

(最终形式)

1)首先创建一个helloworld.cpp文件(注意:我这里只创建了一个C++类),然后将一下代码复制

到该.cpp文件中。

注意:网上的helloworld远程开发的代码有一行多余的#include <minigui/mywindow.h>,我这里完全用不到,还给我报错,我直接删除了。

#include <stdio.h>
#include <string.h>
/*以上为包含标准库*/
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
/*以上为包含MiniGUI库*/
#define IDC_CTRL1 100   /*定义一个控件当然你也可以不需要它*/
int InitWindow(HWND hWnd); /*自定义一个窗口初始化函数,也可以不需要它而直接在消息处理中*/
/*进入消息循环中*/
static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{HDC hdc;switch (message) {case MSG_CREATE:
/*当窗口创建时该消息产生,可以在这里尽心窗口初始化,比如添加控件*/InitWindow(hWnd);break;case MSG_PAINT:       /*当绘制窗口时该消息产生,您可以添加些绘图函数,“Hello world ”就是在这里实现。*/hdc = BeginPaint (hWnd);//得到绘图设备TextOut (hdc, 125, 50, "hell world");//输出字符EndPaint (hWnd, hdc);//结束绘图return 0;case MSG_CLOSE://当窗口关闭时该消息产生DestroyMainWindow (hWnd);//注销窗口PostQuitMessage (hWnd);return 0;}return DefaultMainWinProc(hWnd, message, wParam, lParam);//未处理的函数在此默认处理
}
int MiniGUIMain (int argc, const char* argv[])//main函数对应Windows的WinMain和c中main
{MSG Msg;//定义消息HWND hMainWnd;//生成主窗口句柄MAINWINCREATE CreateInfo;//定义主窗口结构
#ifdef _LITE_VERSION//预处理:判断是否Lite版本SetDesktopRect(0, 0, 1024, 768);
#endifCreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;//设置主窗口风格CreateInfo.dwExStyle = WS_EX_NONE;//设置主窗口扩展风格CreateInfo.spCaption = "First App";//设置主窗口标题CreateInfo.hMenu = 0; //设置主窗口菜单CreateInfo.hCursor = GetSystemCursor(0); //设置主窗口鼠标光标CreateInfo.hIcon = 0; //设置主窗口图标CreateInfo.MainWindowProc = HelloWinProc; //设置主窗口消息处理函数过程CreateInfo.lx = 0; //设置主窗口位置x坐标CreateInfo.ty = 0; //设置主窗口位置y坐标CreateInfo.rx = 320; //设置主窗口宽度CreateInfo.by = 240; //设置主窗口高度CreateInfo.iBkColor = COLOR_lightwhite; //设置主窗口客户区背景色CreateInfo.dwAddData = 0; //设置主窗口的附加数据,通常不需要CreateInfo.hHosting = HWND_DESKTOP; //设置主窗口的托管窗口,通常为桌面DESKTOPhMainWnd = CreateMainWindow (&CreateInfo);//创建主窗口if (hMainWnd == HWND_INVALID)//失败则退出return -1;ShowWindow(hMainWnd, SW_SHOWNORMAL);//显示主窗口while (GetMessage(&Msg, hMainWnd)) {//进入消息处理TranslateMessage(&Msg);DispatchMessage(&Msg);}MainWindowThreadCleanup (hMainWnd);return 0;
}
int InitWindow(HWND hWnd)//自定义的初始化窗口函数,在MSG_CREATE处理中调用,
{static HWND hChildWnd1;//定义控件的窗口句柄,任何控件都是窗口hChildWnd1=CreateWindow("BUTTON","OK",WS_CHILD|WS_VISIBLE,IDC_CTRL1,200,180,40,25,hWnd,0);
//建立一个标题为“OK”的按钮return 0;
}
#ifndef _LITE_VERSION
#include <minigui/dti.c>
#endif

2)复制完之后,会出现由于没有相关的编译库而出现的红色警告,解决方法是复制完代码后点击进入CMakeLists.txt,并将下图中标红的代码部分进行复制或根据自己的创建情况进行微量改写。

注意:这里千万不能错,但凡有依赖库报错都可能是这个地方的问题,需要自己检查。

一下是该CMakeLists.txt代码源文件

cmake_minimum_required(VERSION 2.8 )
project(text5)set(CMAKE_CXX_STANDARD 11)
set(MINIGUI_DIR /usr/local)add_executable(text5 main.cpp)include_directories(${MINIGUI_DIR}/include)
link_directories(${MINIGUI_DIR}/lib)add_executable(helloworld helloworld.cpp)find_package(Threads REQUIRED)target_link_libraries(helloworld PRIVATE ${MINIGUI_DIR}/lib/libminigui.a ${CMAKE_THREAD_LIBS_INIT})

3)将两个文件都复制修改完成之后,把所有文件上传ubuntu,步骤如下,点击选择远程开发即可完成传输。

4)所有程序完成后,在本地的终端中用cd命令将地址转换到映射的地址里,(注意:这里如果用CLion虚拟机终端跳转不了

5)跳转之后敲【cmake ./ 】 会进入编译状态,一般这里不会出现问题。成功标志如下:

6)【cmake ./】之后,进行【make】,如果没有问题就没有error出现,如果有error大概率是CMakeLists.txt出现问题,此时检查CMakeLists.txt是否有误。

这个是我之前的错误,找了好久就是CMakeLists.txt编写时出现问题。

出现这样的颜色画面就代表【make】成功了。

此时【ls】后我们就有了helloworld的项目程序

7)在打开Ubuntu虚拟机的终端,敲下【qvfb】,这是打开窗口的界面。

8)打开窗口后,按下列箭头点击configure。

9)调整如下配置:

10)在CLion本地终端中继续刚才的操作,执行【./helloworld】指令,就可以看到Linux界面跳出helloworld界面辣!

总结:

           用CLion来配置环境是我们用windows编译Linux的一种方法,还有一种wsl编译(这个没有过多了解),但第二种方法没有CLion远程开发好,CLion还可以代码自动补齐。进行环境链接配置的时候真的一步都不能错,本人就是例子,希望这篇文章能帮助到大家。

相关需要的文件连接

1.cmake下载

(这个博主cmake下载的快,但版本低,这里可以支持)

Ubuntu安装CMake的完整指南_ubuntu cmake-CSDN博客

2.文章所使用的ubuntu

我的版本是14.04的安装好QT的版本的,文件有8.56个G,太大放不了百度网盘,嗯,下次冲会员再补上吧,没办法。

3.文章所用的helloworld文件

在文章里面有,这里就不放了。

希望能帮助到大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457051.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC】优化长提示词Prompt:提升ChatGPT输出内容的准确性与实用性

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;长提示词的挑战&#x1f4af;谷歌的优化长提示词技术关键因素分析 &#x1f4af;长提示词的设计原则&#x1f4af;优化长提示词的新框架方法&#x1f4af;实验结果分析不…

解决Github下载速度慢的问题

1. 方式一 先把hosts文件先复制一份到其他文件夹下&#xff0c;以免造成不小心改动出现的后果在C盘的C:\Windows\System32\drivers\etc 下的hosts文件 用编辑器打开后&#xff0c;在末尾处添加访问如下的两个网站所返回的两个IP https://github.com.ipaddress.com/ http://gi…

尝鲜electron --将已有vue/react项目转换为桌面应用

Electron 是一个强大的框架&#xff0c;它允许开发者使用 Web 技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序。它结合了 Node.js 和 Chromium&#xff0c;就相当于在桌面程序web和游览器,所以只需要简单的配置就可以转换为桌面应用 注意:无…

IDEA关联Tomcat——最新版本IDEA 2024

1.链接Tomcat到IDEA上 添加Tomcat到IDEA上有两种方式&#xff1a; 第一种&#xff1a; &#xff08;1&#xff09;首先&#xff0c;来到欢迎界面&#xff0c;找到左侧的Customize选项 &#xff08;2&#xff09;然后找到Build、Execution、Deployment选项 &#xff08;3&am…

Prism 四事件聚合器

#1024程序员节&#xff5c;征文# 不废话&#xff0c;直接上代码一个简单的示例。 1、事件聚合 创建一个文件夹EventBLL&#xff0c;添加EventDemo.cs&#xff0c;代码如下。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using …

.NET使用QuestPDF高效地生成PDF文档

前言 在.NET平台中操作生成PDF的类库有很多如常见的有iTextSharp、PDFsharp、Aspose.PDF等&#xff0c;今天我们分享一个用于生成PDF文档的现代开源.NET库&#xff1a;QuestPDF&#xff0c;本文将介绍QuestPDF并使用它快速实现发票PDF文档生成功能。 QuestPDF介绍 QuestPDF 是…

什么样的JSON编辑器才好用

简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也便于机器解析和生成。随着互联网和应用程序的快速发展&#xff0c;JSON已经成为数据传输和存储的主要格式之一。在处理和编辑JSON数据…

Python开发日记 -- 实现bin文件的签名

目录 1.数据的不同表现形式签名值不一样&#xff1f; 2.Binascii模块简介 3.问题定位 4.问题总结 1.数据的不同表现形式签名值不一样&#xff1f; Happy Muscle试运行了一段时间&#xff0c;组内同事再一次提出了新的需求&#xff1a;需要对bin文件签名。 PS&#xff1a;服…

vue3 树型视图,利用自定义SFC来定义一个TreeItem,然后进行渲染出一个树形。

1、我们在各种项目中都会碰到树形的视图&#xff0c;所以说这个还是很重要的。 2、项目中我们一般会用现成的组件&#xff08;ant-design、element&#xff09;来处理&#xff0c;这里我们使用自定义的方法&#xff0c;提供一个data来处理&#xff0c;比如这样&#xff1a; 最…

【大数据分析与挖掘模型】matlab实现——非线性回归预测模型

一、实验目的 掌握有关非线性回归的理论知识&#xff0c;通过变量代换把本来应该用非线性回归处理的问题近似转化为线性回归问题&#xff0c;并进行分析预测。 二、实验任务 对非线性回归实例进行编码计算&#xff0c;实例如下&#xff1a; 三、实验过程 1.运行非线性回归中…

AJAX—— jQuery 发送 AJAX 请求

1、get 请求 $.get&#xff08;url&#xff0c;[ data ] , [ callback ] , [ type ]&#xff09; url &#xff1a;请求的 URL 地址 data &#xff1a;请求携带的参数 callback &#xff1a;载入成功时回调函数 type &#xff1a;设置返回内容格式&#xff08;xml&#xf…

duilib的应用 在双屏异分辨率的显示器上 运行显示不出来

背景&#xff1a;win11&#xff0c;duilib应用&#xff0c;双显示器&#xff0c;两台分辨率相同&#xff0c;分别设置不同的缩放以后&#xff0c;应用运行以后&#xff0c;程序闪一下消失或者程序还在&#xff0c;但是UI显示不出来。 原因 窗口风格设置不合理&#xff0c;所以…

什么是域名?什么是泛域名?

域名 定义 域名是互联网上用于识别和定位网站或网络服务的名称。它是由一串用点分隔的字符组成&#xff0c;例如 “baidu.com”。就像是现实生活中建筑物的地址&#xff0c;方便用户在互联网的海量信息中找到特定的网站。 结构 域名从右到左依次为顶级域名&#xff08;TLD&…

【Python爬虫系列】_031.Scrapy_模拟登陆中间件

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…

【ArcGIS微课1000例】0125:ArcGIS矢量化无法自动完成面解决方案

文章目录 一、坐标系统问题二、正确使用自动完成面工具一、坐标系统问题 1. 数据库坐标系 arcgis矢量化的过程中,无法自动完成面,可能是因为图层要素没有坐标系造成的。双击数据库打开数据库属性,可以查看当前数据框的坐标系。 2. 图层坐标系 双击图层,打开图层属性,切…

csa练习1

1、修改当前主机名为rhcsa&#xff0c;设置当前时区为Asia/Shanghai 2、在/home/和/root目录下面创建file1文件和dir1目录 3、在/home/file1文件里面写入内容hello&#xff0c;welcome to home 4、在/root/file1文件里面写入当前的时间并写入内容this is administrator 5、在/r…

Etcd 可观测最佳实践

简介 Etcd 是一个高可用的分布式键值存储系统&#xff0c;它提供了一个可靠的、强一致性的存储服务&#xff0c;用于配置管理和服务发现。它最初由 CoreOS 开发&#xff0c;现在由 Cloud Native Computing Foundation (CNCF) 维护。Etcd 使用 Raft 算法来实现数据的一致性&…

基于GPT的智能客服落地实践

&#x1f4cd;前言 在日常生活中&#xff0c;「客服」这个角色几乎贯穿着我们生活的方方面面。比如&#xff0c;淘宝买东西时&#xff0c;需要客服帮你解答疑惑。快递丢失时&#xff0c;需要客服帮忙找回。报名参加培训课程时&#xff0c;需要客服帮忙解答更适合的课程…… 基…

fpga开发环境总结

这里使用Altera(阿尔特拉&#xff09;Cyclone IV E系列的EP4CE10F17C8开发为例&#xff0c;参考正点原子开发板手册进行总结&#xff0c;。 一&#xff0c;Quartus II介绍。 1&#xff0c;Quartus II 是 Altera 公司的综合性 FPGA 开发软件&#xff0c;可以完成从设…

软件测试人员必问的十大面试题..

在软件测试职位面试中&#xff0c;准备并回答一些常见的必问面试题非常重要。这些问题涵盖了软件测试的关键概念、技术和实践&#xff0c;帮助面试官评估你的能力和经验。理解这些问题的重要性是为了在面试中展示你的专业知识和技能&#xff0c;以及你在软件测试领域的实际应用…