[CMake] 示例 多模块与安装(01-basic_E-installing Windows环境下,无法打开*.lib)

本文主要是介绍[CMake] 示例 多模块与安装(01-basic_E-installing Windows环境下,无法打开*.lib),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该示例地址:https://github.com/ttroy50/cmake-examples.git
学cmake看这个仓库就可以了

【问题】在Windows环境下,编译01-basic_E-installing时,提示找不到lib文件

在这里插入图片描述

【原因】在Windows中,需要为导出类或函数设置dllexport之后,才会生成lib文件。

  1. 用官方给的例子。编译之后,你会发现,没有cmake_examples_inst.lib文件
解决

修改两个文件,其他文件不变

一、使用dllexport将外部需要使用到的类导出
#ifndef __HELLO_H__
#define __HELLO_H__#ifdef HELLO_EXPORT
#define EXPORT __declspec(dllexport)
#else
#define EXPORT 
#endifclass EXPORT Hello
{
public:void print();
};#endif
二、更改CMakeList.txt文件,为cmake_examples_inst库添加HELLO_EXPORT
cmake_minimum_required(VERSION 3.5)project(cmake_examples_install)############################################################
# Create a library
#############################################################Generate the shared library from the library sources
add_library(cmake_examples_inst SHAREDsrc/Hello.cpp
)target_include_directories(cmake_examples_instPUBLIC ${PROJECT_SOURCE_DIR}/include
)
# 为cmake_examples_inst库添加宏HELLO_EXPORT,以便它能生成.lib文件(Windows中,dllexport之后才会生成.lib文件)
target_compile_definitions(cmake_examples_inst PRIVATE HELLO_EXPORT)############################################################
# Create an executable
############################################################# Add an executable with the above sources
add_executable(cmake_examples_inst_binsrc/main.cpp
)# link the new hello_library target with the hello_binary target
target_link_libraries( cmake_examples_inst_binPRIVATE cmake_examples_inst
)############################################################
# Install
############################################################# Binaries
install (TARGETS cmake_examples_inst_binDESTINATION bin)# Library
# Note: may not work on windows
install (TARGETS cmake_examples_instLIBRARY DESTINATION lib)# Header files
install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include)# Config
install (FILES cmake-examples.confDESTINATION etc)
结果

在这里插入图片描述

这篇关于[CMake] 示例 多模块与安装(01-basic_E-installing Windows环境下,无法打开*.lib)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705447

相关文章

从零教你安装pytorch并在pycharm中使用

《从零教你安装pytorch并在pycharm中使用》本文详细介绍了如何使用Anaconda包管理工具创建虚拟环境,并安装CUDA加速平台和PyTorch库,同时在PyCharm中配置和使用PyTor... 目录背景介绍安装Anaconda安装CUDA安装pytorch报错解决——fbgemm.dll连接p

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.