当前位置: 首页 > news >正文

工作日志day03

同时构建静态和动态库

//如果用这种方式,只会构建一个动态库,虽然静态库的后缀是.a

ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
ADD_LIBRARY(hello STATIC ${LIBHELLO_SRC})

//修改静态库的名字,这样是可以的,但是我们往往希望他们的名字是相同的,只是后缀不同

ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})

 SET_TARGET_PROPERTIES

这条指令可以用来设置输出的名称,对于动态库,还可以用来指定动态库版本和API版本

同时构建静态和动态库

SET(LIBHELLO_SRC hello.cpp)
ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})
//对hello_static的重名为hello
SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello")
//cmake在构建一个新的target时会尝试清理掉其他使用这个名字的库因为在构建libhello.so时,就会清理掉libhello.a
SET_TARGET_PROPERTIES(hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
SET_TARGET_PROPERTIES(hello PROPERTIES OUTPUT_NAME "hello")
SET_TARGET_PROPERTIES(hello PROPERTIES  CLEAN_DIRECT_OUTPUT 1)

 动态库的版本号

一般动态库都有一个版本号的关联

libhello.so.1.2
libhello.so ->libhello.so.1
libhello.so.1->libhello.so.1.2

CMakeLists.txt插入如下

SET_TARGET_PROPERTIES(hello  PROPERTIES VERSION 1.2 SOVERSION 1)

VERSION指代动态库版本,SOVERSION指代API版本

 安装共享库和头文件

本例中我们将hello的共享库安装到<prefix>/lib目录

将hello.h安装到<prefix>/include/hello目录

//文件放在该目录下
INSTALL(FILES hello.h DESTINATION include/hello)
//二进制,静态库动态库安装都用TARGETS
//ARCHIVE 特指静态库,LIBRARY特指动态库,RUNTIME特指可执行目标二进制
INSTALL(TARGETS hello hello_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)

指定cmake -D CMAKE_INSTALL_PREFIX=/usr ..


 

 如何使用生成的hello.h,libhello.so,libhello.a

使用外部共享库和头文件

#include <hello.h>
int main(){a();return 0;
}

PROJECT(HELLO)
ADD_SUBDIRECTORY(src bin)

接上回安装头文件之后

解决:make后头文件找不到的问题

include<helllo/hello.h>这样include是可以的

关键字:INCLUDE_DIRECTORIES这条指令可以用来向工程添加多个特定的头文件搜索路径,路径之间用空格分割

在CMakeLists.txt中加入头文件搜索路径

INCLUDE_DIRECTORIES(/usr/include/hello)

INCLUDE_DIRECTORIES(/usr/include/hello)
ADD_EXECUTABLE(hello main.cpp)
TARGET_LINK_LIBRARIES(hello libhello.so)

mv /usr/lib/libhello.so /usr/lib64

 

 cd /进入根目录

mv 源文件路径 目标文件路径:移动

mv /home/a1/b1/c1/d1 /home/a1/b1/ 将d1移动到b1的文件夹下

mv /home/a1/b1/c1/d1  /tmp/d222移动并将d1改名为d222

mv /tmp/d222  /tmp/d333只改名

ctrl+shift++:屏幕放大

 

cat  文件 :查看全部内容

head -3 文件:查看前三行

tail

more 文件:翻页  空格翻篇回车换行

grep c /1.txt:过滤

ls 路径 >文件名:将路径下的目录信息放入文件中

gedit 文件名:打开文件

vim 文件名 i :wq         yy复制,p粘贴 dd删除 5dd一下删除5行  u撤销  x删除一个字

http://www.lryc.cn/news/32393.html

相关文章:

  • 【数据挖掘与商务智能分析】第三章 线性回归模型
  • iOS开发之UIStackView基本运用
  • 【java】为什么 main 方法是 public static void ?
  • 最简单的线性回归模型-标量
  • k8s-Kubernetes集群升级
  • Linux25 -- 监听队列链接上限测试、命令uname、ulimit
  • idea:地址被占用
  • JavaScript常用小技巧(js优化)
  • 【项目实战】MySQL 5.7中的关键字与保留字详解
  • Git图解-常用命令操作
  • LeetCode096不同的二叉搜索树(相关话题:卡特兰数)
  • 软件测试7
  • 12 结构:如何系统设计框架的整体目录?
  • 假如你知道这样的MySQL性能优化
  • 79、ClimateNeRF: Physically-based Neural Rendering for Extreme Climate Synthesis
  • 前端面试题(一)
  • Java基础常见面试题(七)
  • 【springmvc】报文信息转换器
  • 3.5知识点复习
  • 湖南中创教育PMP分享项目经理有哪些优势?
  • LeetCode:27. 移除元素
  • 麻雀算法SSA优化LSTM长短期记忆网络实现分类算法
  • 哈希表题目:数组中的 k-diff 数对
  • SAP ERP系统PP模块计划策略2050详解
  • TIA博途中将硬件目录更改为中文的具体方法演示
  • 【多线程操作】线程池模拟实现
  • HBase---Hbase安装(单机版)
  • 启动项管理工具Autoruns使用实验(20)
  • BFD单臂回声实验详解
  • 详解JAVA类加载器