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

相关推荐
Linlingu2 小时前
openClaw不能操作我的电脑提示没有权限如何解决?
人工智能·windows·办公自动化·数字员工·小龙虾
会Tk矩阵群控的小木2 小时前
基于Python的iMessage短信群发与社媒多账号统一管理系统实现
开发语言·windows·python·新媒体运营·开源软件·个人开发
曾小蛙3 小时前
【TWIST2】 PICO重映射G1在ubuntu 22.04下环境配置
ubuntu·g1·twist2·gmr2·pico4u·xrobotoolkit
starvapour3 小时前
Ubuntu部署gitlab频繁出现502的问题
linux·ubuntu·gitlab
雾沉川5 小时前
Nano11 25H2 精简版 Windows11 系统介绍与部署实操教程
windows
__Witheart__5 小时前
rk3568 交叉编译链
ubuntu·rockchip
fpcc5 小时前
工具使用——CMake中的函数和宏
c++·cmake
南檐巷上学6 小时前
基于地平线RDK X5的智能医药机器人系统
ubuntu·机器人·ros·机械臂·openclaw
张世争7 小时前
armcc5 c++98 的静态库裁剪大小的方法
windows·静态库·裁剪·armcc
vsropy7 小时前
安装虚拟机VMware
linux·windows