Linux小知识之CMake创建工程的一般流程
作者:互联网
学习了一点Linux下编译程序的知识,这里总结一下在Ubuntu下使用CMake创建一个工程的一般流程,记录一下详细步骤。
(1)建立一个Test文件夹(作为根目录):
~$ mkdir test
(2)进入test文件夹,分别创建include和src文件夹,同时创建CMakeLists.txt文件:
~$ cd test/
~/test$ mkdir include
~/test$ mkdir src
~/test$ touch CMakeLists.txt
建立完成后,结构如下图所示:
其中,include文件夹用于存放各种头文件,src文件夹主要存放各种源代码文件,CMakeLists.txt文件是编译文件,描述如何编译代码等。
(3)进入src目录下,分别新建两个cpp文件:useHello.cpp和libHello.cpp,前者为包含main函数的主文件,后者为库文件,它们的文件内容如下:
(3-1) useHello.cpp
#include "../include/libHello.h"
// 使用 libHello.h 中的 printHello() 函数
int main( int argc, char** argv )
{
printHello();
return 0;
}
(3-2) libHello.cpp
//这是一个库文件
#include <iostream>
using namespace std;
void printHello()
{
cout<<"Hello World"<<endl;
}
注意:useHello.cpp文件中引用libHello.h头文件需要把路径写正确,否则会提示No such file or directory的错误;
(4)进入test/include路径下,新建一个libHello.h头文件,其内容如下:
#ifndef LIBHELLO_H_
#define LIBHELLO_H_
// 上面的宏定义是为了防止重复引用这个头文件而引起的重定义错误
void printHello();
#endif
(5)最后是修改test文件夹下的CMakeLists.txt文件,其内容如下:
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )
# 声明一个 cmake 工程
project( Hello )
# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
# 添加一个库
add_library( hello src/libHello.cpp )
# 共享库
add_library( hello_shared SHARED src/libHello.cpp )
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( useHello src/useHello.cpp )
# 将库文件链接到可执行程序上
target_link_libraries( useHello hello_shared )
注意:add_library中添加源文件要写相对路径,即src/libHello.cpp,同样的,
add_executable中添加的源文件也要写相对路径,即src/useHello.cpp,否则会提示No such file or directory的错误。
(6)回到根目录,即Test文件夹下,右键点击Open in Terminal,并输入以下指令:
~$ mkdir build
~$ cd build
~$ cmake ..
~$ make
这里新建了一个中间文件夹“build”,然后进入 build 文件夹,通过 cmake .. 命令,对上一层文件夹,也就是代码所在的文件夹进行编译。这样cmake 产生的中间文件就会生成在 build 文件夹中,与源代码分开。当我们发布源代码时,只要把 build 文件夹删掉即可。
(7)上一步编译完成之后,会在build文件夹下生成一个useHello的可执行文件,执行如下指令即可运行得到结果:
~$./useHello
Hello World
(8)上面这个C++工程经过编译之后的简单架构图如下:(查看结构指令见这里)
其中,build文件夹的内容都是编译过程产生的,可以直接将build文件夹删掉,再执行第6步可重新编译。
标签:src,useHello,CMake,流程,libHello,文件夹,build,Linux,cpp 来源: https://blog.csdn.net/JIEJINQUANIL/article/details/102728603