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

CMakeLists.txt语法(三)

一.生成动态库或者静态库步骤

1.创建工程目录

/home/a/testLIB

2.工程目录下创建CMakeLists.txt

PROJECT(testlib)
ADD_SUBDIRECTORY(srcLIB)

3.工程目录下创建子目录

/home/a/testLIB/srcLIB

4.子目录srcLIB下的文件

(1)testlib.h

#ifndef TEST_LIB_H
#define TEST_LIB_H#include<stdio.h>
void printFunc();#endif

(2)testlib.c

#include "testlib.h"
void printFunc()
{printf("this is printFunc test\n");
}

(3)CMakeLists.txt

  • 生成动态库libtest.so
SET(testLIB_SRC testlib.c)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
ADD_LIBRARY(test SHARED ${testLIB_SRC})
  • 生成静态库libtest.a
SET(testLIB_SRC testlib.c)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
ADD_LIBRARY(test STATIC ${testLIB_SRC})

5.编译

工程目录下创建build目录,使用外部编译,进入build目录执行:

cmake ..
make

例如:生成动态库libtest.so
在这里插入图片描述

二.语法

指令ADD_LIBRARY(libname [SHARED|STATIC] source1 source2 … sourceN)
生成的库类型:
(1)动态库:SHARED
(2)静态库:STATIC

三.同时创建动态库和静态库

上述指令无法同时生成同名的动态库(libtest.so)和静态库(libtest.a)
需要使用set_target_properties指令

1.set_target_properties语法

set_target_properties(target1 target2 …
PROPERTIES prop1 value1
[prop2 value2 …])

  • target1, target2, …: 要设置属性的目标名,可以是可执行目标、静态库或共享库。
  • PROPERTIES: 关键字,指定后面是要设置的属性列表。
  • prop1 value1, prop2 value2, …: 属性名和对应的值,可以设置多个属性。

常见的目标属性
在 CMake 中,可以设置的目标属性非常多,具体取决于目标的类型和使用场景。一些常见的目标属性包括:
OUTPUT_NAME: 设置输出文件的名称。
RUNTIME_OUTPUT_DIRECTORY: 设置运行时输出目录。
ARCHIVE_OUTPUT_DIRECTORY: 设置静态库输出目录。
LIBRARY_OUTPUT_DIRECTORY: 设置共享库输出目录。
COMPILE_OPTIONS: 设置编译选项。
CXX_STANDARD, CXX_STANDARD_REQUIRED: 设置 C++ 标准和是否要求严格遵循。

2.子目录下的CMakeLists.txt

SET(testLIB_SRC testlib.c)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
ADD_LIBRARY(test SHARED ${testLIB_SRC})
ADD_LIBRARY(test_static STATIC ${testLIB_SRC})
SET_TARGET_PROPERTIES(test_static PROPERTIES OUTPUT_NAME "test")

3.同时生成动态库和静态库过程

在这里插入图片描述
编译目录 /home/a/testLIB/build/lib 下同时生成了动态库libtest.so和静态库libtest.a

http://www.dtcms.com/a/415312.html

相关文章:

  • 简单flash个人网站山东省建设教育集团网站首页
  • windows多显示器,独立的虚拟桌面
  • 国外的app设计网站企管宝官网
  • 深入解析 Redis 的两种持久化机制:RDB 与 AOF
  • 爱佳倍 北京网站软件外包公司是什么意思
  • SCNet平台—让AI更简单、更高效、更实用
  • 高流量网站设计菏泽网站开发公司
  • 做一个展示型网站要多少钱自己做本市网站
  • SSRF靶场环境命令执行靶场环境
  • 【数字孪生】02-数字孪生在各个领域的应用(1)
  • 网站字体样式重庆唐卡装饰口碑怎么样
  • wgcna 相关性热图中4个颜色 4个共表达模块 的模块基因是否都要做GO/KEGG分析”,核心取决于你的**研究目标和模块的生物学意义*
  • 什么是网站名称文件夹会展设计需要学什么
  • 第十六届蓝桥杯软件赛C组省赛C++题解(京津冀)
  • Spring Cloud 服务网关 Gateway 详解:微服务的 “统一入口” 实战
  • 基于 PyTorch 的模型测试与全局平均池化实践
  • 买软件网站建设福田祥菱v1单排
  • 江阴网站设计哪家好百度云用流量做网站
  • C++ 类型推导(第二部分)
  • C 内存布局
  • 编译Duckdb机器学习插件QuackML
  • 帝国cms仿站工具学网站建设 去那里
  • 《R for Data Science (2e)》免费中文翻译 (第9章) --- Layers(1)
  • 网站注册时间查询aspnet网站开发pdf
  • 企业管理说白了是干嘛的seo优化排名教程
  • 医院建设网站网页ui设计尺寸规范
  • 网站模板批量下载推广电话
  • 织梦网站如何做seo我的家乡网页设计模板
  • 平顶山哪里有做网站的公司dede后台网站主页
  • 客户做网站需要提供什么网站建设洽谈