CMake —— 2、cmake在windows与linux下动态链接库编译与链接实例(附:过程代码与CMakeLists.txt)

文章说明

     本次文章介绍创建两个目录,分别为动态链接库类目录(LogLib )和调用动态链接库代码目录(TestLog),由于TestLog下代码调用LogLib生成的动态链接库。通过cmake分别在ubuntu20.04和windows10下来编译本次要求。

     总体目录结构如下:

 

LogLib

     目录结构如下:

     XLog.h

cpp 复制代码
#ifndef XLOG_H
#define XLOG_H

#include <iostream>

#if _WIN32		// windows
class __declspec(dllexport) XLog
#else			// linux
class  XLog
#endif
{
	public:
		XLog();
};

#endif

     XLog.cpp

cpp 复制代码
#include "XLog.h"

XLog::XLog()
{
	std::cout << "welcome XLog ..." << std::endl;
}

 

TestLog

     目录结构如下:

     main.cpp

cpp 复制代码
#include <iostream>

#include "XLog.h"

int main()
{
	XLog log;

	std::cout << "------- end -------" << std::endl;
	return 0;
}

 

CMakeLists.txt
cpp 复制代码
# 将LogLib工程编译输出动态链接库
# TestLog工程输出为exe。它将调用LogLib输出的库

# 最低版本支持
cmake_minimum_required(VERSION 3.16)

# 工程名称
project(TestLog)

# 工程包含库的头文件路径
include_directories("./LogLib")

# 构建编译输出的库(库名称 动态库(静态库填STATIC) 库工程下文件名,.h可不用写)
add_library(LogLib  SHARED ./LogLib/XLog.cpp)

# 构建执行程序(项目名称 工程下文件名,.h可不用写)
add_executable(TestLog TestLog/main.cpp)

# 工程需要连接的库名
target_link_libraries(TestLog LogLib)

 

Linux-Ubuntu20.04下编译

 

Windows下编译

 

关注

笔者 - jxd

相关推荐
我是海飞32 分钟前
使用杰理 AC7925B 实现 Windows电脑 USB 副屏
windows·单片机·电脑·嵌入式·杰理
东风微鸣2 小时前
一次断电引发的血案:Ubuntu 26.04 升级中断后的完整救援实录
数据库·ubuntu·postgresql
Victor Zhong2 小时前
llama.cpp 部署大模型到 Ubuntu 台式机 SOP
linux·ubuntu·llama
律宏阔2 小时前
Windows 双网卡配置:通过跃点数实现网线访问局域网、Wi-Fi 访问公网
windows
Source.Liu3 小时前
【A11】拥有者模式平台架构笔记
windows·笔记·架构·rust
我先去打把游戏先4 小时前
Git-Rebase使用指南-从原理到实战
服务器·git·嵌入式硬件·物联网·ubuntu
可爱系程序猿6 小时前
Windows 11 下惠普 M126nw 驱动报错溯源:完整包、WSD 端口与类驱动记录
windows·程序人生·电脑
技术不好的崎鸣同学7 小时前
第七章:模块踩踏以覆写导出函数绕过CFG
c++·windows·安全·系统安全
黄一一9112437 小时前
吾爱大佬开发,离线可用!PDF文件处理工具,本地网页版文件-浏览器里就能搞定,所有操作系统可用
windows·安全·阿里云·pdf·.net·开源软件
承渊政道8 小时前
Linux网络学习【应用层自定义协议与序列化实战:从手写序列化与反序列化到深入理解进程间关系与守护进程】
linux·网络·学习·ubuntu·json·序列化与反序列化