如何在cmake中添加lib库:

 生成lib文件 libhello.a
add_library(hello hello.cxx) # 在top level添加子目录
add_subdirectory(hello) # 在顶层添加link依赖
target_link_libraries(Test PUBLIC hello) # 添加targert依赖的头文件路径
target_include_directories(Test PUBLIC
"{PROJECT_BINARY_DIR}"
"{PROJECT_SOURCE_DIR}/hello") # test.cxx添加头文件
#include "hello.hpp"

接前篇,新增一个hello.hpp和hello.cpp的文件,期望将其打包为libhello.a被Test调用,具体操作:

  • 在test.cxx所在目录下创建hello,并在hello下分别创建hello.hpp、hello.cpp
  • void hello();
  • #include <iostream>
    #include "hello.hpp"
    void hello() {
    std::cout << "hello world" << std::endl;
    }

    在hello目录下新建CMakeLists.txt

  • add_library(hello hello.cxx)

    在顶层的CMakeLists.txt写入

  • target_link_libraries(Test PUBLIC hello)
    target_include_directories(Test PUBLIC
    "{PROJECT_BINARY_DIR}"
    "{PROJECT_SOURCE_DIR}/hello")

    test.cxx里添加头文件

  • #include <iostream>
    #include <memory>
    #include "version.hpp"
    #include "hello.hpp"
    class A {
    public:
    A() { std::cout << "create A" << std::endl; }
    ~A() { std::cout << "destroy A" << std::endl; }
    void show() { std::cout << "call A function" << std::endl; }
    };
    int main() {
    std::cout << "VERSION:" << TEST_VERSION_MAJOR << "." << TEST_VERSION_MINOR << std::endl;
    std::unique_ptr<A> a = std::make_unique<A>();
    a->show();
    hello();
    return 0;
    }

    目录结构如下:

  • ├── build
    ├── CMakeLists.txt
    ├── hello
    │ ├── CMakeLists.txt
    │ ├── hello.cpp
    │ └── hello.hpp
    ├── test.cxx
    └── version.hpp.in

    在build下执行cmake .. && cmake --build .

    Test执行结果如下:

  • VERSION:1.0
    create A
    call A function
    hello world
    destroy A

    原文链接:cmake添加lib库

如何在cmake中添加lib库的更多相关文章

  1. VS2010中添加lib库引用

    VS2010中添加lib库引用: 1 菜单  项目---> 属性--->配置属性-->链接器---->输入---附加依赖项,  加入库名,如: my_API.lib; 或是在c ...

  2. 在VS中添加lib库的三种方法

    注意: 1.每种方法也要复制相应的DLL文件到相应目录,或者设定DLL目录的位置,具体方法为:"Properties" -> "Configuration Prop ...

  3. 在vs2005中添加lib库的方法

    方法一:在用到lib的地方加上  //强烈推荐这种方法.#pragma    comment(lib,"libname.lib") 方法二:     点击菜单命令 “项目/属性”, ...

  4. QT总结第3篇:如何在QT中添加.lib,.dll还有.h文件

    因为我在工作的过程中,使用的是第三方提供的库,但是如何将这些库添加到QT的工程中,是个问题,让我恼火了很久,怎么弄都是错的. 下面,我会对这个问题,进行叙述,希望其他人第一次遇到这种问题的时候,可以轻 ...

  5. 如何在Webstorm中添加js库 (青瓷H5游戏引擎)

    js等动态语言编码最大的缺点就是没有智能补全代码,webstorm做到了. qici_engine作为开发使用的库,如果能智能解析成提示再好不过了,经测试80%左右都有提示,已经很好了. 其他js库同 ...

  6. 如何在Eclipse中添加Servlet-api.jar的方法

    方法一: 点击窗口->首选项->java->构建路径->类路径变量->新建:将你的tomcat目录下的common/lib/servlet.jar加进来.如果你建立了一个 ...

  7. visual studio添加lib库

    方法1: 通过设置工程配置来添加lib库. A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径 ...

  8. VS中添加第三方库及相对路径设置

    原文 VS中添加第三方库及相对路径设置 对于一些第三方的SDK,一般会包含头文件(*.h),静态库文件(*.lib)和动态库文件(*.dll). 1.  文件位置:为了提高程序的可移植性,将第三库放在 ...

  9. iOS——Xcode中添加第三方库

    一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...

  10. 如何在Eclipse中添加Tomcat的jar包

    原文:如何在Eclipse中添加Tomcat的jar包 右键项目工程,点击Java Build Path 点击Add Library,选择Server Runtime 选择Tomcat版本 此时就看到 ...

随机推荐

  1. ABP VNext 系列:框架启动流程以及依赖注入原理和源码分析

    简单介绍 ABP VNext Github 地址:https://github.com/abpframework/abp 官网文档地址:https://abp.io/docs/latest 官网:ht ...

  2. 云原生周刊:6 项 K8s 成本控制策略 | 2023.7.17

    开源项目推荐 Base Image Finder 当使用容器扫描工具来识别已知漏洞(CVE,或常见漏洞和暴露)时,可能很难理解漏洞在容器中的位置,以及如何缓解这些漏洞.通常,最简单.最有效的缓解方法是 ...

  3. 云原生爱好者周刊:非容器化应用也需要 Docker Compose

    开源项目推荐 Process Compose Process Compose 是一个调度编排工具,不过不是用来调度容器的,而是用来调度非容器化的应用,可以定义进程的依赖性和启动顺序,也可以定义重启策略 ...

  4. 顶点着色网格转换为 UV 映射的纹理化网格

    简介 顶点着色是一种将颜色信息直接应用于网格顶点的简便方法.这种方式常用于生成式 3D 模型的构建,例如 InstantMesh.然而,大多数应用程序更偏好使用 UV 映射的纹理化网格. 本教程将介绍 ...

  5. AI绘画漫谈——从AI网页生成说起

    1. 又说"前端已死" 为什么说"又"呢?因为前两年我在一些博客网站三天两头就能看到这个标题,虽然今年好像换话题了,但感觉前端每年都要死个七八次,当然这里面还是 ...

  6. SpringBoot项目集成MinIO

    一.MinIO的下载安装以及基本使用 1.下载地址:https://dl.min.io/server/minio/release/windows-amd64/minio.exe 2.下载好后需要手动创 ...

  7. 2022/1/25-2022牛客寒假算法基础集训营1B-炸鸡块君与FIFA22(线段树)

    题目描述 热爱足球(仅限游戏)的炸鸡块君最近购买了FIFA22,并且沉迷于FIFA22的Rivals排位上分. 在该排位系统中,每局游戏可能有胜利(用W表示).失败(用L表示).平局(用D表示)三种结 ...

  8. 【2024.10.03】NOIP2024 赛前集训-刷题训练(5)

    [2024.10.03]NOIP2024 赛前集训-刷题训练(5) NOIP2017 提高组 小凯的疑惑 形式化题面:求最大的正整数 \(w\),满足 \(ax + by = w\) 不存在一对非负整 ...

  9. 基于 Github 平台的 .NET 开源项目模板 - 发布与归档 相关

    CHANGELOG.md 案例 ## [1.0.1.2] - 2023-03-10 ### myproject2 _ 1.0.1: - 初步版本 简单实现 还未优化 - fix warning ## ...

  10. The 2024 ICPC Asia East Continent Online Contest (II) K.Match

    题面 K.Match 给定长度为 \(n\) 的两个序列 \(a\) 和 \(b\),当且仅当 \(a_i ⊕ b_j ≥ k\) 时,\(a_i\) 与 \(b_j\) 连一条双向边,其中 \(⊕\ ...