Linux下C++文件的g++和cmake编译方式使用介绍

Linux下C++文件的g++和cmake编译方式使用介绍

虽然现在在编写C++工程时有各类IDE可供选择,但通过这篇文章,希望能够更深入地理解各类IDE在编译C++代码时的底层原理。

首先新建一个简单的源文件Hello.cpp进行后续测试

#incldue
using namespace std;

int main(int argc, char **argv){
	cout << "Hello" <<endl;
	return 0;
}

1.g++编译

终端输入:

g++ Hello.cpp

若出现"command not found"的报错,说明可能还未安装g++,则可以使用如下命令安装g++:

sudo apt-get install g++

若执行顺利,这条命令应该没有任何输出,但在当前目录下会出现一个a.out文件,并且该文件具有执行权限,此时在终端中输入./a.out即可运行此程序。

$ ./a.out
Hello

这里需要说明的是,为了有最直观的感受,以上例子使用了大量的默认参数,几乎省略了所有中间参数。g++默认把源文件编译成a.out文件(也可以自己指定可执行文件的名称)。

2.cmake编译

cmake编译是现在在工程中广泛使用的编译方式。在一个cmake工程中,我们会使用cmake命令生成一个makefile文件,然后,用make命令根据这个makefile文件的内容来编译整个工程。
首先,我们需要在目录下新建一个CMakeLists.txt文件,内容如下:

#声明要求的cmake最低版本
cmake_minimum_required(VERSION 2.8)

#声明一个cmake工程
project(Hello)

#添加一个可执行程序
#语法:add_executable(程序名 源代码文件)
add_executable(hello Hello.cpp)

CMakeLists.txt文件的作用是告诉cmake要对这个目录下的文件做哪些操作。其格式需要遵循cmake的语法。然后就可以调用cmake对该工程进行cmake编译:
终端输入:

cmake .

cmake后的一个点表示在当前目录下进行cmake
cmake编译成功后就可以在目录下找到一个可执行文件Hello,执行该文件即可得到源文件输出:
终端输入:

$ ./Hello
Hello

但同时也会发现,cmake编译后会产生大量的中间文件,我们不希望自己代码发布出去后带有这么多中间文件。所以在编译工程的时候,我们通常创建一个build文件夹专门用来存放编译过程中产生的中间文件,在代码发布时可以将build文件夹删除。
利用build文件夹保存中间文件进行编译的过程如下:
终端输入:

mkdir build
cd build
cmake ..
make

后续操作与上面相同。

你可能感兴趣的:(C++,SLAM,c++,linux,cmake)