首页 > 系统相关 >cmake引入第三方库的debug和release版本之Windows版本

cmake引入第三方库的debug和release版本之Windows版本

时间:2024-08-05 16:06:39浏览次数:8  
标签:cmake target Windows LIBRARY release 版本 debug calc DIR

概述#

  • 本文将介绍cmak引入第三方库debug和release不同配置。
    Windows上,习惯将debug模式下生成的动态库名后缀添加D 以作和release区分。cmake创建一个项目A,A引入动态库B,cmake怎么配置A链接动态库B的debug和release对应的库呢
  • 本文的教程是基于 这里, 如果没有看,我推荐你先看下,再阅读本文。

核心函数 target_link_libraries#

就这一个核心函数,我通常使用它链接LIB。如下

Copy Highlighter-hljs
	add_executable(exam_lib ${exam_src})

	# to link dynamic library 
	target_link_libraries(exam_calc ${PROJECT_NAME})

它还可以配置debug和release模式下的动态库。

核心代码#

Copy Highlighter-hljs
# -------------------------------------------------------------------------------------------
# 区分动态库的debug和release
target_link_libraries ( ${PROJECT_NAME} PRIVATE
						debug ${calc_LIBRARY_debug}
						optimized ${calc_LIBRARY_release} )

就这一句,是不是简单到爆炸。 其中。${calc_LIBRARY_debug} 是动态库debug模式下的绝对路径。 同理, ${calc_LIBRARY_release}是动态库release模式下的绝对路径。而他们的定义出现在 这里 提到的 findcalc.cmake文件中,

Copy Highlighter-hljs
#指定库头文件所在路径
FIND_PATH(calc_INCLUDE_DIR icalc.h ${CMAKE_CURRENT_SOURCE_DIR}/ext/calc/include)

#指定库文件所在路径
FIND_LIBRARY(calc_LIBRARY_release calc.lib ${CMAKE_CURRENT_SOURCE_DIR}/ext/calc/lib/release)

FIND_LIBRARY(calc_LIBRARY_debug calcD.lib ${CMAKE_CURRENT_SOURCE_DIR}/ext/calc/lib/debug)

# 为了下游可以继续使用
set(calc_FOUND FALSE)
if (calc_INCLUDE_DIR AND calc_LIBRARY_release AND calc_LIBRARY_debug)
	set(calc_FOUND TRUE)
endif()

上面使用find_package链接第三方库。

一个不完整例子#

Copy Highlighter-hljs
# 创建项目
add_library( ${PROJECT_NAME} SHARED ${book_src} ${book_header})
# -------------------------------------------------------------------------------------------
# 指定头文件搜索路径
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(${PROJECT_NAME} PRIVATE ${calc_INCLUDE_DIR})

# -------------------------------------------------------------------------------------------
# 区分动态库的debug和release
target_link_libraries ( ${PROJECT_NAME} PRIVATE
						debug ${calc_LIBRARY_debug}
						optimized ${calc_LIBRARY_release} )
 

标签:cmake,target,Windows,LIBRARY,release,版本,debug,calc,DIR
From: https://www.cnblogs.com/lidabo/p/18343411

相关文章

  • BitDock:为Windows桌面带来Mac风格的美化工具(附下载)
    许多人对Mac系统的精致界面情有独钟,但面对苹果电脑不菲的价格标签——就例如年初新登场的基础款MacBookAir,即便配置朴素,也轻易跨过了八千大关(这预算在Windows阵营足以拥抱高端配置),不免让人望而却步。幸运的是,将Windows系统改头换面,焕发Mac般的高雅并非遥不可及的梦想。下载:Bi......
  • 一款专业的 Windows 恶意程序分析与清理工具
    大家好,今天给大家分享一款专业的Windows恶意程序分析与清理工具OpenArk,它能够帮助用户发现系统中隐藏的恶意软件。OpenArk是一款Windows平台上的开源Ark工具.Ark是Anti-Rootkit(对抗恶意程序)的简写,OpenArk目标成为逆向工程师、编程人员的工具,同时也能为那些希望清理恶意软......
  • Parallels Desktop19.3.0虚拟机软件可以让你在Mac上同时运行Windows、Linux等多个系统
    ParallelsDesktop19,一个虚拟机软件,可以让你在Mac上同时运行Windows、Linux等多个系统。听起来是不是很厉害?但其实它还有更多隐藏的小技巧等着你去发现。如果你还在因为Mac和Windows之间的不兼容而苦恼,那么ParallelsDesktop19就是你的救星。它可以帮助你轻松地在Mac上运行Win......
  • Parallels Desktop19Mac就是这样一个神器!在Windows和Mac之间反复切换横跳!
    在Windows和Mac之间反复横跳,是很多职场人的常态。Windows系统生态完善,软件丰富;而Mac的优雅设计、出色的性能以及稳定的系统体验也让人难以舍弃。但鱼与熊掌不可得兼,两个系统来回切换,需要准备两台电脑,既麻烦又占用空间,还增加了经济负担。如果一台电脑可以同时运行两个操作系......
  • windows 获取套接字连接状态
     GetTcpTable 和 GetTcpTable2 都是WindowsAPI中用于获取TCP连接表格的函数,但它们有一些关键的区别:GetTcpTable定义:GetTcpTable 函数用于获取TCP连接的表格信息。结构体:它使用 MIB_TCPTABLE 结构体来表示TCP连接的表格。兼容性:GetTcpTable 是早期的......
  • 面向-Windows-程序员的-C---软件互操作教程-全-
    面向Windows程序员的C++软件互操作教程(全)原文:C++SoftwareInteroperabilityforWindowsProgrammers协议:CCBY-NC-SA4.0一、准备介绍本章介绍了软件互操作性项目。我们先简要了解一下先决条件。接下来是项目概述。最后,我们描述了项目的主要组成部分以及它们是如何组......
  • 安装CPU版本的TensorFlow教程
    在这篇博客中,我将详细介绍如何在Conda虚拟环境中安装CPU版本的TensorFlow。第一步,首先在安装前你需要检查你的电脑中是否安装VisualStudio,在应用中搜索visual,如下图,如果有就跳到下一步,没有的话就跟着下面步骤安装。 VisualStudio安装,复制链接到浏览器打开,选择适合你电脑......
  • 【攻防技术系列+权限维持】Windows开机启动项
    一、简介在我们的计算机开机的时候,总是会有一些程序和服务自动启动,这其中包括Windows操作系统运行所必需的程序和其他用户程序。这是操作系统给用户提供的功能,意在为用户开机启动程序提供方便,我们不必每次启动时都手动的打开一些必须打开的程序。二、常见开机启动项2.1启动文......
  • windows xusb21.sys驱动对虚拟手柄个数限制
    由于windows授权限制,云游戏服务器上的windows版本多数为server2019部分游戏用到了手柄,调研后基于https://github.com/nefarius/ViGEmBus来魔改虚拟出84个手柄(一个容器只跑一个游戏,一个游戏独立使用4个手柄,一台云游戏服务器预开21个容器,所以理论至少需要能创建84个手柄)但是实......
  • nvm--node【 node.js version management】node.js的版本管理工具
    1.卸载node如果你已经安装了node,那么你需要先卸载node(不然安装nvm可能会失败),如果你没有安装那直接跳过这一步到下一步。打开控制面板->打开程序和功能->右上角搜索输入node->右键卸载为了确保彻底删除node在看看你的node安装目录中还有没有node文件夹,有的话一起删除。再......