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

相关推荐
天地之于壹炁兮3 小时前
编程I/O入门指南:核心操作全解析
数据库·windows·microsoft
深圳市恒讯科技4 小时前
英国服务器Windows系统远程桌面安装与优化
运维·服务器·windows
像风一样的男人@5 小时前
python --两个文件夹文件名比对(yolo 图和label标注比对检查)
windows·python·yolo
曾小蛙7 小时前
【ROS2+深度相机】在Ubuntu安装realsense-ros
ubuntu·realsense-ros·ros2 humble·d435
diannao7208 小时前
实时将大模型的解决方案转换为随机应变的机器人指令
开发语言·windows·python·机器人
奔跑吧邓邓子9 小时前
【C语言实战(75)】C语言内存探秘:泄漏检测与分析实战
linux·c语言·windows·内存·开发实战·泄露检测
Elendill9 小时前
【Ubuntu】Ubuntu 服务器升级系统操作记录
运维·服务器·ubuntu
HIT_Weston9 小时前
16、【Ubuntu】【VSCode】VSCode 断联问题分析:问题解决
linux·vscode·ubuntu
NON-JUDGMENTAL15 小时前
在 Ubuntu 上安装 Ollama 并通过 Open WebUI 运行本地大语言模型
linux·ubuntu·语言模型
小白也想学C15 小时前
ubuntu22.04下载QQ音乐闪退问题
ubuntu