在Linux下用QtCreator编译C++源码

前言

昨天折腾了一天,要把在Visual Studio上的一个C++工程到Linux系统上编译,简单的C++程序直接写makefile或者g++命令行编译,但是这个工程有十几个cpp文件和h头文件,互相之间有依赖关系,还要依赖boost库,makefile会很复杂也费时,最终借助Linux下的一款叫QtCreator的IDE编译成功了,QtCreator比Clion编译更快。总结一下一些小经验,方便其他有需要的人。

步骤

(我的Linux虚拟机装的CentOS)

1、先安装g++

sudo yum install gcc gcc-c++

2、安装cmake

sudo yum install cmake

3、下载qt-creator

选择Linux-64bit版本,下载后得到qt-creator的.run文件,运行该文件安装,我的版本是4.1.0

4、写cmake文件

安装好就可以在Application-Programming中看到qtcreator了,新建项目,并将所有的.cpp和.h文件放到工程目录下。在qt的Build下点击Run Cmake,生成cmake的基本模板,根据需要在其中修改。第一次用cmake,并不太懂。把了解的写一写。


在Linux下用QtCreator编译C++源码_第1张图片

​ 第一行代表project名字

第二行是cmake的版本

第三行是要使cmake使用c++11编译选项,在编译过程中遇到很多类似于string变量没有.front()方法的问题都是因为没有指明要使用c++11新特性。

第四行和第五行是添加boost库的,其中boost库事先已安装(yum install boost;yum install boost-devel),在RedHat系库的头文件和源码是分开的所以要安装两个package。

第六行是说把当前目录下的文件都放到src_list中,第七行用这些文件编译生成GraphAdaptation(自定义)可执行文件

第八行将该执行文件与boost库连接

5、编译运行

qt中build-build all就可以得到编译文件啦,会生成一个结果文件夹,里面有可执行文件,可以选择debug下还是release下编译得到的文件夹不同,release进行了优化。


在Linux下用QtCreator编译C++源码_第2张图片

问题

visual studio下可以运行的代码可能发现在linux下编译报错,这些几乎都可以在stackoverflow上找到答案。我遇到的一些问题和解决方法。

1、在构造函数中ifstream无copy函数,因此

inputFile = std::ifstream(inputFileName) //error

改成构造函数的参数列表形式

inputFile(inputFileName,std::ifstream::in) //correct

std::ofstream同理

2、在vs中使用的类似 windows.h 这类文件要全部改掉,linux中并没有与此直接对应的API,所以要重新定义函数。

3、调用了std::to_string()方法,error: ‘to_string’ is not a member of ‘std’

解决方法是写一个std::to_string()替换标准库中的
首先写一个stdtostring.h文件


在Linux下用QtCreator编译C++源码_第3张图片

然后在需要使用 std::to_string() 方法的源文件中包含它:


4

你可能感兴趣的:(工具类)