CMake生成静态库

Posted spmt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMake生成静态库相关的知识,希望对你有一定的参考价值。

目录结构

技术图片

文件内容
  • Hello.h
#ifndef MYSHAREDLIB_HELLO_H
#define MYSHAREDLIB_HELLO_H
 
// 打印 Hello World!
void hello();
 
// 使用可变模版参数求和
template <typename T>
T sum(T t)
{
    return t;
}
template <typename T, typename ...Types>
T sum(T first, Types ... rest)
{
    return first + sum<T>(rest...);
}
 
#endif
  • Hello.cpp
#include <iostream>
#include "Hello.h"
 
void hello() {
    std::cout << "Hello, World!" << std::endl;
}
  • main.cpp
#include <iostream>
#include "Hello.h"
using std::cout;
using std::endl;
 
int main() {
 
    hello();
    cout << "1 + 2 = " << sum(1,2) << endl;
    cout << "1 + 2 + 3 = " << sum(1,2,3) << endl;
 
    return 0;
}
cmake基本脚本
#cmake版本
cmake_minimum_required(VERSION 3.5)

# 项目名称
project(hello_library)

# 根据库文件代码生成静态库
add_library(hello_library STATIC src/Hello.cpp)

# 包含指定头文件所在的目录
target_include_directories(hello_library PUBLIC  ${PROJECT_SOURCE_DIR}/include/static)

# 创建可执行程序
add_executable(hello_binary src/main.cpp)

# 链接静态库文件
target_link_libraries( hello_binary PRIVATE hello_library)
编译
mkdir build
cd build
cmake ..
make
./hell_binary
返回结果
Hello, World!
1 + 2 = 3
1 + 2 + 3 = 6

以上是关于CMake生成静态库的主要内容,如果未能解决你的问题,请参考以下文章

vs+cmake+使用静态库

vs+cmake+使用静态库

如何理解CMake文档,优先静态库,Cuda混编

CMake同时生成静态库和动态库

cmake--生成--静态库

CMake生成静态库