CMAKE 《多模块例子》

news/2024/9/20 7:00:00/文章来源:https://www.cnblogs.com/paylove/p/18337129

概述

生成sort\calc的静态库,并生成app1.exe app2.exe

目录结构

image

CMakeLists.txt 位置以及配置

根CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(mulitiple_modules)
set(CMAKE_CXX_STANDARD 17)
# define variables
# LIBPATH 库存储位置
set(LIBPATH ${PROJECT_SOURCE_DIR}/lib)
# EXECPATH 可执行文件位置 
set(EXECPATH ${PROJECT_SOURCE_DIR}/bin)
# HEADER 头文件存储位置
set(HEADPATH ${PROJECT_SOURCE_DIR}/include)
# 库文件位置
set(CALCLIB calc)
set(SORTLIB sort)
# 可执行程序的名字
set(APPNAME1 app1)
set(APPNAME2 app2)
# 添加子目录
add_subdirectory(calc)
add_subdirectory(sort)
add_subdirectory(test1)
add_subdirectory(test2)

calc目录下CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(sub_modules_calc)
set(CMAKE_CXX_STANDARD 17)
# 搜索源文件
aux_source_directory(./ SRC)
# 搜索头文件
include_directories(${HEADPATH})
# 生成动态库位置
set(LIBRARY_OUTPUT_PATH ${LIBPATH})
# 生成动态库
add_library(${CALCLIB} STATIC ${SRC})

sort目录下CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(sub_modules_sort)
set(CMAKE_CXX_STANDARD 17)
# 搜索源文件
aux_source_directory(./ SRC)
# 搜索头文件
include_directories(${HEADPATH})
# 生成动态库位置
set(LIBRARY_OUTPUT_PATH ${LIBPATH})
# 生成动态库
add_library(${SORTLIB} STATIC ${SRC})

test1目录下CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(sub_modules_test1)
set(CMAKE_CXX_STANDARD 17)
# 搜索源文件
aux_source_directory(./ SRC)
# 搜索头文件
include_directories(${HEADPATH})
# 可执行文件位置
set(EXECUTABLE_OUTPUT_PATH ${EXECPATH})
# 链接静态库
link_directories(${LIBPATH})
link_libraries(${CALCLIB})
add_executable(${APPNAME1} ${SRC})

test2目录下CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(sub_modules_test2)
set(CMAKE_CXX_STANDARD 17)
# 搜索源文件
aux_source_directory(./ SRC)
# 搜索头文件
include_directories(${HEADPATH})
# 可执行文件位置
set(EXECUTABLE_OUTPUT_PATH ${EXECPATH})
# 链接静态库
link_directories(${LIBPATH})
link_libraries(${SORTLIB})
add_executable(${APPNAME2} ${SRC})

在跟目录下新建build

mkdir build
cd build
# 生成makefiel
cmake .. 
# 生成静态库,exe
make

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/776238.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021-工业互联网内部预选-Crypto_crackCipher

Crypto_crackCipher 考点:RSA、共模攻击、小明文攻击 #题目 n: 3193467051524313537654449477780016781874168088948235747604366410155226384696590270906268756094936294755374972352472143574789695791249214719304367176275827392855787492563778812812523498909705462158…

使用ossfs将Bucket挂载到统信UOS系统本地目录

目录简介功能原理运行环境安装ossfs安装依赖源码下载执行脚本编译安装安装验证ECS挂载OSS配置账号访问信息创建挂载目录挂载单个bucket挂载多个bucket指定挂载bucket和路径卸载OSS 简介 对于那些需要直接读写本地文件的应用程序,ossfs 提供了一种方便的解决方案,使应用程序在…

Pixel Aligned Language Models论文阅读笔记

Motivation & Abs 近年来,大语言模型在视觉方面取得了极大的进步,但其如何完成定位任务(如word grounding等)仍然不清楚。本文旨在设计一种模型能够将一系列点/边界框作为输入或者输出。当模型接受定位信息作为输入时,可以进行以定位为condition的captioning。当生成位…

Pytorch笔记|小土堆|P1-5

Pytorch环境安装及配置 1、创建conda环境,名为pytorch conda create -n pytorch python=3.10 2、在任务管理器的性能中确认显卡,是否支持CUDA。其次,确认显卡驱动,cuda9.2支持396.26以上的驱动,可以在命令行使用 nvidia-smi 来看自己驱动是否满足要求,如果低于396.26,可…

Cortex-M3初探

关于Cortex-M3初探索目录寄存器组R0-R12:通用寄存器R13:两个堆栈指针 SPR14:连接寄存器 LRR15:程序计数寄存器 PC特殊功能寄存器xPSR寄存器PRIMASK寄存器FAULTMASK寄存器BASEPRI寄存器CONTROL寄存器操作模式与特权级别用户级切换为特权级的流程内建的嵌套向量中断控制器 NV…

OpenSSH秘钥指纹图像生成算法

使用 SSH 秘钥生成时产生疑惑,它的 fingerprint randomart image 是如何生成的?对此进行了探索和研究,意外的简单OpenSSH秘钥指纹图像生成算法使用 SSH 秘钥生成时产生疑惑,它的 randomart image 是如何生成的?下面进行了探索和研究 引入 生成位数为 4096 位的 rsa 公私钥…

检测Linux服务器CPU、内存、负载、IO读写、机房带宽和服务器类型的脚本

脚本内容: #!/usr/bin/env bash # # # #RED=\033[0;31m GREEN=\033[0;32m YELLOW=\033[0;33m SKYBLUE=\033[0;36m PLAIN=\033[0mabout() {echo ""echo " ========================================================= "echo " \ Supe…

拖拽式操作也能制作中国式报表了?

报表作为企业经营和决策的重要工具,其重要性不言而喻。中国式报表,不仅要求数据的精准呈现,还需要在格式上保持高度的灵活性,以满足不同场景下的需求。中国式报表以独特的复杂性和信息量大而著称,而这种复杂性也带来了制作和维护上的挑战,使得许多企业在处理中国式报表时…

STM32G030F6P6TR_IAP

bootloader程序 STM32FLASH读写1 /**2 ******************************************************************************3 * @file stmflash.c4 * @brief 读写STM32内部flash(STM32G030F6P6TR)5 **********************************************************…

XALM基本语法

1.同一个UI可以有不同的实现如上图所示,可以存在以下两种不通的实现: 实现一: 实现二:2.对对象属性赋值: 两种语法:使用字符串进行简单赋值;使用属性元素进行复杂赋值; 一.简单赋值: 二.使用属性元素赋值: 3.简化XAML得技巧 精简后如下: 4.对于复杂的绘图和动画制作…

8月8日在线研讨会 | 如何快速开发量产级别功能安全应用软件

本次研讨会经纬恒润将结合自身控制器产品研发及国内外功能安全开发、集成、测试、咨询的实践经验,重点基于功能的应用监控软件,从需求定义、架构设计、单元设计及测试验证等多个环节,分享功能安全量产软件实施的方案、加速实施过程的方法,以推动客户汽车量产级别软件功能安…

vue集成svg大图拖拽无限放大缩小

vue项目中根据实际CAD图为参考,以及参看项目实际现场,手动绘制了一张线体、堆垛机、库区货架svg图,集成到vue页面中,svg图中可以交互接收C#发送过来的singalR实时数据。接收singalR的实时数据并显示到vue中,这里不作展开讲,可以参看笔者另一篇文章《vue若依集成C#的singa…