cmake命令之使用静态库(include_directories,link_directories,target_link_directories)

2023-11-10

include_directories的命令形式如下

include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])

link_directories的命令形式如下

link_directories([AFTER|BEFORE] directory1 [directory2 ...])

target_link_directories的命令形式如下

target_link_directories(<target> [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

接下来,是使用案例的展开

利用以前讲过的方法,生成libsum.a库文件,网址如下

https://blog.csdn.net/weixin_42108533/article/details/118684298

库文件的源文件sum.cpp的內容如下

#include "sum.h"

int sum(int a, int b)
{
>---return a + b;
}

至此准备工作完了,本文要用的目录如下

.
├── build(空目录)
├── CMakeLists.txt
├── libsum.a
├── main.cpp
└── sum.h

main.cpp的内容如下

#include "sum.h"
#include<iostream>
using namespace std;

void test()
{
>---cout << sum(1,2) << endl;
}


int main()
{
>---test();
>---return 0;
}

sum.h的内容如下

#include<stdlib.h>

int sum(int a, int b);

重点来了,CMakeLists.txt的内容如下

#定义需用的cmake的最低版本
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

#项目信息用,本例中,可用可不用
PROJECT(main)
#用于头文件目录添加,注意必须是绝对路径,否则可能编译不过
INCLUDE_DIRECTORIES(~/study/cmakeStudy/demo3)

#用于库文件的目录添加,注意也必须是绝对路径,否则可能编译不过
LINK_DIRECTORIES(~/study/cmakeStudy/demo3)

#用于生成目标文件
ADD_EXECUTABLE(main ./main.cpp)

#链接静态库文件,注意此命令是放在了ADD_EXECUTABLE之后
target_link_libraries(main libsum.a)

build目录中依次执行如下命令

cmake ..
make

生成可执行文件main

执行./main后,输出结果

3

cmake使用动态库的情况和静态库的大同小异,只需要将CMakeLists.txt作如下变化

target_link_directories(main libsum.a) ---> target_link_directories(main libsum.so)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cmake命令之使用静态库(include_directories,link_directories,target_link_directories) 的相关文章

  • 如何在cmake中静态链接到glibc

    我正在尝试从 Fedora 构建一个可以在 RedHat 6 机器上运行的包 所以我需要构建和静态链接一些RedHat机器中不存在的库 我发现我可以你 static libgcc or static libstdc 与标准库的静态版本链接
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu

随机推荐

  • MySQL的sum函数优化

    有一张表 结构如下 Field Type Null Key Default Extra ID bigint 20 NO PRI NULL auto increment
  • 51单片机开发问题之不能直接对端口管脚输出高低点电平

    在做51单片机点亮一个了led的时候遇到一个问题 不能直接用P0 0 0 对单片机管脚输出高低电平 Keil编译器会报错 如图 用sbit定义一个变量来控制管脚就行
  • 网络安全学习路线是怎样的?从入门到入坟,看这篇就够了

    为什么要学习安全 近几年网络安全事件层出不穷 相信大家哪怕没遇到过 但也听过不少了吧 如服务器遭受入侵被黑 用户帐号被盗 被钓鱼 勒索病毒等 这些一旦发生 对企业而言都是不小的打击 因此 网络安全不容忽视 同时随着时代的不断发展 公司对于运
  • DOM0和DOM2

    DOM事件绑定 DOM0级事件 特点 所有的浏览器都支持 事件只能注册一次 后面的会覆盖旧的 注册方式 1 在html上添加 div div 其中this指向自身 2 匿名函数d nclick function 其中 this 指向自身 3
  • 美国科技大佬成功之前混得都有多惨

    摘要 超过三分之一在美国成立的顶尖高科技公司是由在国外出生的人创立的 他们的成功经验带动许多移民来到美国实现美国梦的希望 id cproIframe u1503021 2 width 250 height 250 src http pos
  • 使用DBN实现风速预测matlab代码

    使用DBN实现风速预测matlab代码 风速预测在实际生产生活中有着广泛的应用 对于风电场 农业灌溉 城市规划等领域都有着重要的意义 本文将介绍如何使用深度信念网络 Deep Belief Networks DBN 来实现风速预测 并提供相
  • Mysql数据库的导入和导出

    Mysql数据库的导入和导出 1 导入 2 导出 Mysql数据库的可移植性是比较好的 在命令行状态下可用仅仅一行的代码就实现数据库的导入和导出 不论是在Windows操作系统还是Linux操作系统下的命令行 命令基本上完全一致 1 导入
  • QT主窗口与子窗口互相传值笔记

    1 主窗口向子窗口传值 将子窗口定义为主窗口的成员变量 在子窗口中定义接受数据的成员变量 主窗口中可以使用子窗口成员变量来访问他的成员变量 于是就能直接赋值了 void Main wgt test son wgt num 18 2 子窗口向
  • PAT 1015 德才论 (25分) C语言实现

    1015 德才论 25分 宋代史学家司马光在 资治通鉴 中有一段著名的 德才论 是故才德全尽谓之圣人 才德兼亡谓之愚人 德胜才谓之君子 才胜德谓之小人 凡取人之术 苟不得圣人 君子而与之 与其得小人 不若得愚人 现给出一批考生的德才分数 请
  • 将文件或目录移动到另外的目录

    File or directory to be moved File file new File filename Destination directory File dir new File directoryname Move fil
  • Flutter编译卡在Running Gradle task ‘assembleDebug‘

    为什么卡在这一步 把网络断开 发现了问题 卡在了下载运行环境和依赖库的步骤 jcenter 下载速度太慢 知道原因就好办了 需要修改3个地方 1 首先找到fultter sdk所在文件夹的位置 依次进入 flutter packages f
  • 单端口RAM实现FIFO

    RAM分类 单口ram 单端口RAM只有一组数据线和一组地址线 只有一个时钟 读写共用地址线 输出只有一个端口 所以单端口RAM的读写操作不能同时进行 当wea拉高时 会将数据写入对应的地址 同时douta输出的数据与此时写入的数据是一致的
  • STC32G12K128内部集成的I2C总线实现oled12864显示

    STC32G 系列的单片机内部集成了一个 I2C 串行总线控制器 I2C 是一种高速同步通讯总线 通讯使用 SCL 时钟线 和 SDA 数据线 两线进行同步通讯 对于 SCL 和 SDA 的端口分 STC32G 系列的单片机提供了切换模式
  • springboot+mybatisplus 动态切换数据源——数据库(通过AOP获取head参数动态切换)

    写这个博客 是记录一下自己的学习过程 因为网上信息杂乱不清 所以此博客只做记录和分享作用 参考博客链接 https blog csdn net QiuHaoqian article details 120479890 再此基础上修改了一些
  • sqli-labs/Less-30

    首先判断一下是否为数字型注入 输入如下 id 1 id 1 and 1 2 回显如下 正确回显了 说明属于字符型注入 然后在判断是属于单引还是双引 输入1 回显如下 正确回显 再试一试双引号 输入1 回显如下 这告诉我们两件事情 1 这属于
  • Git 命令大全「全面且实用,值得收藏」

    用了这么久的 git 工具 中途也使用过 SourceTree 但是最后发现 还是代码香啊 虽然之前也写过一篇学习笔记 Git教程学习笔记和填坑总结 以及 SourceTree 工具的使用 但是感觉那篇还是笔记冗余 看起来不是很明确 所以
  • 利用docker来部署自己的项目

    在部署自己项目时 开始时一头雾水 如果直接放在服务器上跑 既麻烦又不稳定 后来看到有写采用docker进行项目部署 前后折腾了一天 总算部署上去了 分享出来让大家少走点弯路 整体的流程大概是这样的 首先 准备环境 需要在本地部署docker
  • 在R中线性回归分析的函数是lm()

    在R中线性回归分析的函数是lm 1 一元线性回归 我们可以根据以上数据来分析合金的强度是否与碳含量有关系 首用以下命令把数据读取到R中 x lt c seq 0 10 0 18 by 0 01 0 20 0 21 0 23 y lt c 4
  • JS格式化日期

    JS格式化日期真是件淡疼的事 网上转了半天终于发现有一个挺不错的函数 贴上来做个笔记 时间对象的格式化 Date prototype format function format format yyyy MM dd hh mm ss var
  • cmake命令之使用静态库(include_directories,link_directories,target_link_directories)

    include directories的命令形式如下 include directories AFTER BEFORE SYSTEM dir1 dir2 link directories的命令形式如下 link directories AF