C++程序移植为Ubuntu系统平台CLion/cmake工程的要点

本文讲述了如何将一个在Windows环境下用VisualStudio2019编写的C++分数计算器程序移植到Ubuntu系统。通过使用CLion IDE和CMakeLists.txt文件配置,成功实现了跨平台编译。在Ubuntu中,直接使用cmake命令行编译时,还需指定输入和输出字符编码以解决中文乱码问题。同时,文章提到了在Windows平台的CLion中运行程序可能出现的中文乱码问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

因为需要学习SLAM,最近装了Ubuntu系统,想到3年前在Windows系统用Visual Studio 2019编写过一个还算可以的C++程序,思考能否将其移植到Ubuntu系统中运行,从结果来看是可行的,重点是CMakeLists.txt代码的编写。
鉴于Visual Studio工程跨平台配置麻烦,而且本人之前编写一些Python程序用习惯了同公司的Pycharm。索性先将VS2019的工程转化成CLion工程,再考虑平台间移植。
从结果来看,CLion也不是必须的。实际上CLion也是使用的cmake工程编译方法,所以掌握了Ubuntu上怎么用cmake编译则一通百通。


移植准备

提到的用Visual Studio 2019编写的程序:分数计算器C++程序
其中的主要文件有:

C++代码头文件
Submitted Program 1.cpp
Calculation.cppCalculation.h
Fraction.cppFraction.h

新建FractionalCalculator文件,将这几个文件复制进去,其中第一个C++代码改名为main.cpp;为了显示美观,我将另2个C++代码放入src子文件夹,另2个头文件放入inc文件夹。


Ubuntu平台CLion工程

文件夹安排
如图所示,新建CMakeLists.txt文件,写入:

cmake_minimum_required(VERSION 3.20)
project(FractionalCalculator)

set(CMAKE_CXX_STANDARD 14)

file(GLOB_RECURSE SOURCES "src/*.cpp")
include_directories(inc)

add_executable(FractionalCalculator main.cpp ${SOURCE_FILES} ${SOURCES})

然后点击main.cpp以项目形式打开CLion(2021.2.2版本),编译运行即可。在Ubuntu平台的CLion IDE中运行会调试不会出现输出中文乱码的情况。


Ubuntu平台cmake工程

如果直接在终端用cmake编译,需要对CMakeLists.txt文件作以修改,修改后如下:

cmake_minimum_required(VERSION 3.16)
project(FractionalCalculator)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -finput-charset=GBK -fexec-charset=UTF-8")

file(GLOB_RECURSE SOURCES "src/*.cpp")
include_directories(inc)

add_executable(FractionalCalculator main.cpp ${SOURCE_FILES} ${SOURCES})

首先改了最低版本,因为我的Ubuntu20.04上装的cmake是3.16.1版,与CLion中用的cmake版本不同。
其次指定了输入和输出字符编码,参考关于UTF-8、GBK编码以及编译时charset的指定的一些总结,由于当初代码编写的cout语句中有中文,所以-finput-charset=GBK;由于Ubuntu系统的中文字符编码默认是zh_CN.UTF-8,所以-fexec-charset=UTF-8
然后打开终端,执行cmake编译的一般流程:

mkdir build
cd build
cmake ..
make

这样做的好处是,编译生成的中间文件全部放在了build文件夹中方便管理。

./FractionalCalculator

执行后查看运行效果:
Ubuntu终端运行结果


Windows平台CLion工程

与前面Ubuntu平台的CLion工程配置方法类似,只要编写CMakeList.txt即可。
但是Windows平台下在CLion IDE中运行或调试时,总有其中一种输出的中文乱码(或是运行或是调试的输出),在CMakeList.txt中添加指定字符编码-finput-charset=GBK也不行。
设置在外部控制台运行
索性打开菜单栏的运行选项,设置在外部控制台中运行,这样不管是调试还是运行都不会乱码。
Windows命令行运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值