给出一个cmake的例子
时间: 2023-07-08 11:12:32 浏览: 43
假设我们有如下的项目结构:
```
project/
├── CMakeLists.txt
├── include/
│ └── hello.h
├── src/
│ ├── CMakeLists.txt
│ └── hello.cpp
└── main.cpp
```
其中,`hello.cpp` 和 `hello.h` 文件定义了一个简单的函数 `hello()`,`main.cpp` 文件使用该函数输出一条消息。
我们的目标是使用 CMake 构建一个可执行文件,将 `hello.cpp` 和 `main.cpp` 编译成一个可执行文件。
我们可以编写如下的 `CMakeLists.txt` 文件:
```cmake
# 根目录的 CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.10)
# 设置项目名称和版本号
project(hello_world VERSION 1.0)
# 添加子目录 src
add_subdirectory(src)
# 添加包含目录
include_directories(include)
# 添加可执行文件
add_executable(hello_world main.cpp)
# 链接库文件
target_link_libraries(hello_world hello_lib)
```
```cmake
# src 目录下的 CMakeLists.txt 文件
# 添加库文件
add_library(hello_lib hello.cpp)
```
这里我们定义了一个名为 `hello_world` 的项目,该项目由根目录和子目录 `src` 两个部分组成。在根目录的 `CMakeLists.txt` 文件中,我们使用 `add_subdirectory` 命令将子目录 `src` 添加到项目中,并使用 `include_directories` 命令添加头文件目录。
在子目录 `src` 的 `CMakeLists.txt` 文件中,我们使用 `add_library` 命令将 `hello.cpp` 编译成一个库文件 `hello_lib`。
最后,我们使用 `add_executable` 命令将 `main.cpp` 编译成一个可执行文件 `hello_world`,并使用 `target_link_libraries` 命令将库文件 `hello_lib` 链接到可执行文件中。
这样,我们就完成了一个简单的 CMake 项目的构建。