简单的CMake项目入门(一)

这篇博客介绍了如何使用CMake构建简单的C++项目,从Hello World程序开始,逐步引入头文件、静态库和动态库的构建。通过示例展示了CMakeLists.txt文件的编写,解释了关键指令的作用,并提到了make install过程。
摘要由CSDN通过智能技术生成

说明:本人使用的系统为 CentOS7。

简单的 Hello world

新建一个 main.cpp

#include <iostream>

using namespace std;

int main()
{
   
    cout << "Hello world" << endl;
    return 0;
}

编写 CMakeLists.txt

# cmake 最低版本需求
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# 项目名称
PROJECT(HELLO) 
# 把当前目录下所有源代码文件和头文件加入变量 srcs
AUX_SOURCE_DIRECTORY(. srcs)
# 生成可执行文件 hello
ADD_EXECUTABLE(hello ${srcs})

新建一个 build 文件夹使目录如下:

[16:22:33 cmake_learn]$ tree
.
├── build
├── CMakeLists.txt
└── main.cpp

进入 build 文件夹中执行 cmake ..

[16:23:09 build]$ cmake ..
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/artist/learn/cmake_learn/build

之后:

[16:23:12 build]$ ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile

之后 make:

[16:23:32 build]$ make
Scanning dependencies of target hello
[100%] Building CXX object CMakeFiles/hello.dir/main.cpp.o
Linking CXX executable hello
[100%] Built target hello

现在我们查看一下当前目录:

[16:23:43 build]$ ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  hello  Makefile

这里有一个可执行文件 hello,运行它:

[16:24:02 build]$ ./hello
Hello world

这样我们就运行起了第一个CMake小工程。
可执行文件一般会放到 bin 目录下,让我们最后修改一下 CMakeLists.txt 文件。

# cmake 最低版本需求
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# 项目名称
PROJECT(HELLO)
# 把当前目录下所有源代码文件和头文件加入变量 srcs
AUX_SOURCE_DIRECTORY(. srcs)
# 生成可执行文件 hello
ADD_EXECUTABLE(hello ${srcs})

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

最后这句是我们新添加的,意思是:将可执行文件生成到一个指定的位置/bin,而 ${PROJECT_SOURCE_DIR} 代表你的 CMakeLists.txt 的位置。好了这回我们把 build 目录中的文件都删除干净,重新 cmake 一下:

[16:31:17 build]$ rm -fr *
[16:31:21 build]$ cmake ..
[16:31:22 build]$ make
[16:31:23 build]$ ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile

查看发现没有了可执行文件 hello,我们回到上一层 CMakeLists.txt 所在位置再看一下:

[16:33:10 cmake_learn]$ ls
bin  build  CMakeLists.txt  main.cpp

进入 bin 执行 hello

[16:34:54 cmake_learn]$ cd bin/
[16:34:55 bin]$ ls
hello
[16:34:56 bin]$ ./hello
Hello world

最后让我们看一眼整体结构:

[16:35:59 cmake_learn]$ tree . -L 2
.
├── bin
│   └── hello
├── build
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   ├── cmake_install.cmake
│   └── Makefile
├── CMakeLists.txt
└── main.cpp

这一次让我们多一个带头文件的函数

结构:

[17:06:15 cmake_learn]$ tree
.
├── build
├── CMakeLists.txt
├── main.cpp
├── poem.cpp
└── poem.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值