从零开始 CMake 学习笔记 (D)shared-library
开始前先默念三遍口诀:
- Declare a target
- Declare target’s traits
- It’s all about targets
本系列主要根据GitHub上的 cmake-examples 项目进行翻译总结,同时对于不清晰的概念及函数进行查阅理解记录形成。
文章目录
1 介绍
显示了一个 hello world 示例,它首先创建并链接了一个静态库。同上一节类似,使用不同的文件夹来作为源文件和include文件。整体的文件架构如下所示:
1.1 文件树
D-shared-library$ tree
.
├── CMakeLists.txt
├── include
└── shared
└── Hello.h
└── src
└── Hello.cpp
└── main.cpp
1.2 文件简介
- CMakeLists.txt - 包含了你希望运行的 CMake 命令
cmake_minimum_required(VERSION 3.5)
project(hello_library)
//从原文件生成动态库
add_library(hello_library SHARED
src/Hello.cpp
)
//添加一个库,这个库使用 ALIAS 定义了它的别名
add_library(hello::library ALIAS hello_library)
target_include_directories(hello_library
PUBLIC
${
PROJECT_SOURCE_DIR}/include
)
# 从 main.cpp 创建可执行文件
add_executable(hello_binary
src/main.cpp
)
# 将重新命名后的hello library库链接到hello_binary库
target_link_libraries( hello_binary
PRIVATE
hello::library
)
- include/shared/Hello.h - 要包含的头文件,会生成一个静态库链接