windows系统cmake生成动态库无lib文件解决方法
创始人
2024-02-17 03:32:13
0

作为cmake初学者,在windows系统下使用cmake生成c++动态库时出现了下图所示问题,是关于lib文件。找了一圈,也没发现生成有lib文件。在这里插入图片描述
在google上查,才发现windows系统下动态库生成lib文件,还需要添加以下命令:

#windows系统动态库生成lib文件命令
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

生成动态库Demo(链接在此)

  1. 文件目录架构:
    ——源文件目录
    ——hello-world.cpp
    ——CMakeLists.txt
    ——message
    ——|——Message.cpp
    ——|——CMakeLists.txt
    ——|——include
    ————|——Message.hpp

库源码文件在message目录,其中新建了文件夹include放置头文件Message.hpp。
库文件的CMakeLists.txt:

# set minimum cmake version
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)# project name and language
project(recipe-03 LANGUAGES CXX)set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)#配置编译后的输出路径
# 设定动态链接库的存储路径
SET(LIBRARY_OUTPUT_PATH  ${CMAKE_CURRENT_LIST_DIR}/../bin)include_directories(./include)
# generate a library from sources
add_library(messageSHAREDMessage.cpp)

Message库源代码:

Message.hpp

#pragma once#include 
#include class Message {
public:Message(const std::string &m) : message_(m) {}friend std::ostream &operator<<(std::ostream &os, Message &obj) {return obj.printObject(os);}private:std::string message_;std::ostream &printObject(std::ostream &os);
};

Message.cpp

#include "Message.hpp"#include 
#include std::ostream &Message::printObject(std::ostream &os) {os << "This is my very nice message: " << std::endl;os << message_;return os;
}

主CMakeLists.txt

# set minimum cmake version
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)# project name and language
project(recipe-03 LANGUAGES CXX)#配置编译后的输出路径# 设定动态链接库的存储路径SET(LIBRARY_OUTPUT_PATH  ${CMAKE_CURRENT_LIST_DIR}/../bin)include_directories(./include)
# generate a library from sources
add_library(messageSHAREDMessage.cpp)include_directories(./include)

main.cpp

#include "Message.hpp"#include 
#include std::ostream &Message::printObject(std::ostream &os) {os << "This is my very nice message: " << std::endl;os << message_;return os;
}

cmd命令进入到主MakeLists.txt所在目录后(需要提前下载Cmake及MinGW-w64,并将其bin路径添加到系统环境变量Path中):

cmake .
cmake --build .

最后在bin/debug会生成动态库的lib、dll文件,以及exe可执行文件。
在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...