CMake 中 install 命令用于定义安装规则,指定构建目标(如可执行文件、库等)和文件应该被安装到的位置。

文章目录

      • 项目结构
        • mylib.h
        • mylib.cpp
        • main.cpp
      • CMakeLists.txt
      • 构建和安装步骤
      • 安装后的结果
      • 总结

这个示例将包括一个静态库,一个头文件,以及一个使用该库的简单可执行程序。我们将演示如何编写 CMakeLists.txt 文件以构建和安装这些组件。

项目结构

假设项目的目录结构如下:

/MyProject
|-- CMakeLists.txt
|-- /include
    |-- mylib.h
|-- /src
    |-- mylib.cpp
    |-- main.cpp
mylib.h

头文件 mylib.h 声明了一个函数:

// mylib.h
#ifndef MYLIB_H
#define MYLIB_H

void printMessage();

#endif // MYLIB_H
mylib.cpp

源文件 mylib.cpp 实现了 printMessage 函数:

// mylib.cpp
#include "mylib.h"
#include 

void printMessage() {
    std::cout << "Hello from MyLib!" << std::endl;
}
main.cpp

main.cpp 是一个简单的程序,使用了 mylib

// main.cpp
#include "mylib.h"

int main() {
    printMessage();
    return 0;
}

CMakeLists.txt

以下是根目录的 CMakeLists.txt 文件,用于构建库和可执行文件,并定义安装规则。

cmake_minimum_required(VERSION 3.10)
project(MyProject)

# 指定头文件路径
include_directories(include)

# 构建静态库
add_library(mylib STATIC src/mylib.cpp)

# 构建可执行文件
add_executable(myapp src/main.cpp)

# 链接库到可执行文件
target_link_libraries(myapp mylib)

# 安装规则
install(TARGETS myapp mylib
        RUNTIME DESTINATION bin
        ARCHIVE DESTINATION lib
        LIBRARY DESTINATION lib)
install(DIRECTORY include/ DESTINATION include)

构建和安装步骤

  1. 生成构建系统

    mkdir build && cd build
    cmake ..
    
  2. 编译项目

    cmake --build .
    
  3. 安装项目(可能需要管理员权限):

    sudo cmake --install .
    

安装后的结果

  • 可执行文件 myapp 将被安装到系统的 bin 目录。
  • 静态库 libmylib.a(在 Windows 上为 mylib.lib)将被安装到系统的 lib 目录。
  • 头文件 mylib.h 将被安装到系统的 include 目录。

总结

这个实战示例展示了如何使用 CMake 构建一个项目,该项目包括一个静态库、一个头文件和一个使用该库的可执行文件。通过定义 CMakeLists.txt 文件,CMake 可以自动处理编译、链接和安装过程。这种方法不仅确保了构建过程的一致性和可重现性,而且也提供了一种标准方式来安装和分发软件。

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