四时宝库

程序员的知识宝库

C++开发:如何使用 cmake 构建项目

下面是一个示例项目结构以及如何使用 cmake 创建一个包含子目录的 C++ 项目。

假设你的项目结构如下:

MyProject/
├── CMakeLists.txt
├── main.cpp
├── include/
│   └── mylib.h
└── src/
    ├── CMakeLists.txt
    └── mylib.cpp

1. 顶层CMakeLists.txt

在项目的根目录下创建 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.10)

# 设置项目名称和版本
project(MyProject VERSION 1.0)

# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 包含头文件目录
include_directories(${PROJECT_SOURCE_DIR}/include)

# 添加子目录
add_subdirectory(src)

# 添加可执行文件
add_executable(MyProject main.cpp)

# 链接库
target_link_libraries(MyProject PRIVATE MyLib)

2.main.cpp

在项目的根目录下创建 main.cpp 文件:

#include <iostream>
#include "mylib.h"

int main() {
    std::cout << "Hello, World!" << std::endl;
    mylib_function();
    return 0;
}

3. 头文件mylib.h

在 include 目录下创建 mylib.h 文件:

#ifndef MYLIB_H
#define MYLIB_H

void mylib_function();

#endif // MYLIB_H

4. 源文件mylib.cpp

在 src 目录下创建 mylib.cpp 文件:

#include <iostream>
#include "mylib.h"

void mylib_function() {
    std::cout << "This is a function from mylib." << std::endl;
}

5. 子目录CMakeLists.txt

在 src 目录下创建 CMakeLists.txt 文件:

# 添加库
add_library(MyLib mylib.cpp)

# 包含头文件目录
target_include_directories(MyLib PUBLIC ${PROJECT_SOURCE_DIR}/include)

构建项目

  1. 在项目根目录下创建一个 build 目录:
mkdir build
cd build
  1. 运行 cmake 生成构建文件:
cmake ..
  1. 编译项目:
cmake --build .
  1. 运行生成的可执行文件:
./MyProject

输出应为:

Hello, World!
This is a function from mylib.

通过这种方式,你可以在 CMake 中组织和管理一个包含多个子目录的 C++ 项目。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接