如何在cmake中添加lib库
如何在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库的更多相关文章
- VS2010中添加lib库引用
VS2010中添加lib库引用: 1 菜单 项目---> 属性--->配置属性-->链接器---->输入---附加依赖项, 加入库名,如: my_API.lib; 或是在c ...
- 在VS中添加lib库的三种方法
注意: 1.每种方法也要复制相应的DLL文件到相应目录,或者设定DLL目录的位置,具体方法为:"Properties" -> "Configuration Prop ...
- 在vs2005中添加lib库的方法
方法一:在用到lib的地方加上 //强烈推荐这种方法.#pragma comment(lib,"libname.lib") 方法二: 点击菜单命令 “项目/属性”, ...
- QT总结第3篇:如何在QT中添加.lib,.dll还有.h文件
因为我在工作的过程中,使用的是第三方提供的库,但是如何将这些库添加到QT的工程中,是个问题,让我恼火了很久,怎么弄都是错的. 下面,我会对这个问题,进行叙述,希望其他人第一次遇到这种问题的时候,可以轻 ...
- 如何在Webstorm中添加js库 (青瓷H5游戏引擎)
js等动态语言编码最大的缺点就是没有智能补全代码,webstorm做到了. qici_engine作为开发使用的库,如果能智能解析成提示再好不过了,经测试80%左右都有提示,已经很好了. 其他js库同 ...
- 如何在Eclipse中添加Servlet-api.jar的方法
方法一: 点击窗口->首选项->java->构建路径->类路径变量->新建:将你的tomcat目录下的common/lib/servlet.jar加进来.如果你建立了一个 ...
- visual studio添加lib库
方法1: 通过设置工程配置来添加lib库. A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径 ...
- VS中添加第三方库及相对路径设置
原文 VS中添加第三方库及相对路径设置 对于一些第三方的SDK,一般会包含头文件(*.h),静态库文件(*.lib)和动态库文件(*.dll). 1. 文件位置:为了提高程序的可移植性,将第三库放在 ...
- iOS——Xcode中添加第三方库
一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...
- 如何在Eclipse中添加Tomcat的jar包
原文:如何在Eclipse中添加Tomcat的jar包 右键项目工程,点击Java Build Path 点击Add Library,选择Server Runtime 选择Tomcat版本 此时就看到 ...
随机推荐
- Linux命令netstat查看端口使用方法
[redis@fgedu180 ~]$ netstat -an|grep 6379 tcp 0 0 192.168.4.180:6379 0.0.0.0:* LISTEN
- 函数计算平台 OpenFunction 在自动驾驶领域的应用
嘉宾 | 霍秉杰 整理 | 王新 出品 | CSDN 云原生 2022 年 5 月 10 日,在 CSDN 云原生系列在线峰会第 4 期"ApacheSkyWalking 峰会"上 ...
- 「模拟赛」多校 A 层联训 16
比赛链接 A.四舍五入 虽然让找 \(i\),但枚举 \(i\) 很没前途啊,所以考虑找到所有 \(j\) 的个数 发现对于一组合法的 \(i.j\) 需要满足 \(i\in [kj,\ kj+0.5 ...
- Flink CDC同步MySQL数据到Iceberg实践
介绍 Flink CDC: 捕获数据库完整的变更日志记录增.删.改等所有数据. Flink在1.11版本开始引入了Flink CDC功能,并且同时支持Table & SQL两种形式.Flink ...
- 十分钟配置完成Go开发环境
本文介绍了GO环境搭建以及GOPATH.GOROOT等基本概念,希望让你少走弯路 SDK下载 如果要使用Golang,我们首先要安装Golang的SDK开发包 Golang是网友给Go语言起的另一个称 ...
- Struts2漏洞复现
Struts2漏洞复现 靶场环境:/vulhub/struts2大多都是OGNL注入 是什么: Struts2是一个基于MVC设计模式的Web应用框架 识别: 1.通过网页后缀来进行判断,如.do或者 ...
- excel/xlsx 空值判断NaN
从numpy导入nan类型,以此判断NaN类型
- JAVA 注解示例 详解
注解(Annotation) 为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据). 注解的语法比较简单,除了@符号的使用以外, ...
- Java多线程设计模式之线程池模式
前序: Thread-Per-Message Pattern,是一种对于每个命令或请求,都分配一个线程,由这个线程执行工作.它将"委托消息的一端"和"执行消息的一端&qu ...
- golang工具之generate
示例: 大家经常碰到命名错误码.状态码的同时,又要同步写码对应的翻译,有没有感觉很无聊.这里举一个例子: package main import "fmt" // 定义错误 ...