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

ops/2024/10/24 10:18:10/

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.ppmy.cn/ops/127712.html

相关文章

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-2

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

华为eNSP实验:交换机流量控制之流量抑制

一、交换机流量控制之流量抑制 流量抑制是一种网络管理技术&#xff0c;用于防止过量的数据流通过网络设备&#xff0c;从而避免网络拥塞和性能下降。具体如下&#xff1a; 基本原理&#xff1a; 流量抑制通过设置特定的阈值来限制网络中的数据流量。当某个端口或接口的入站流…

029_基于nodejs外卖网站设计和实现

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

FreeRTOS实时操作系统(1)

前言&#xff1a;FreeRTOS内容较多&#xff0c;分篇发布&#xff0c;较为基础&#xff0c;旨在梳理知识&#xff0c;适合入门的同学 &#xff08;基于正点原子STM32F103开发板V2&#xff09; &#xff08;对于本篇&#xff0c;若有疑问&#xff0c;欢迎在评论区留言&#…

[LeetCode] 50. Pow(x, n)

题目描述&#xff1a; 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000示例 2&#xff1a; 输入&#xff1a;x 2.10000, n 3 输出…

2024年科技赋能教育,AI辅导引领新趋势

在近日举行的2024年中国国际服务贸易交易会上&#xff0c;教育服务展区凭借科技与教育深度融合的特色&#xff0c;成功吸引了大量参观者的注意。特别是主打AI个性化辅导的学习产品&#xff0c;更是成为了众多家长眼中的“省妈神器”。 “大语言模型”技术的快速发展及其科学化…

【C++刷题】力扣-#243-最短单词距离

题目描述 给定一个单词列表 words 和两个单词 word1 和 word2&#xff0c;返回这两个单词在列表中的最短距离。如果 word1 和 word2 是同一个单词&#xff0c;则返回它与自身的最近距离。 示例 示例 1: 输入: words ["practice", "makes", "perfec…

函数模板和类模板

博客ID&#xff1a;LanFuRenC系列专栏&#xff1a;C语言重点部分 C语言注意点 C基础 Linux 数据结构 C注意点 声明等级&#xff1a;黑色->蓝色->红色 欢迎新粉加入&#xff0c;会一直努力提供更优质的编程博客&#xff0c;希望大家三连支持一下啦 目录 1&#xff0…