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

相关推荐
liulun3 分钟前
Skia如何绘制几何图形
c++·windows
old_power10 分钟前
UCRT 和 MSVC 的区别(Windows 平台上 C/C++ 开发相关)
c语言·c++·windows
扛枪的书生24 分钟前
AD 提权-CVE-2022-26923: CertiFried
windows·渗透·kali·提权·域渗透
面朝大海,春不暖,花不开2 小时前
Python 文件操作与输入输出:从基础到高级应用
windows·python·microsoft
染指11103 小时前
35.x64汇编写法(二)
汇编·windows·x64游戏·x64汇编·游戏攻防
新兴AI民工5 小时前
windows上的visual studio2022的项目使用jenkins自动打包
windows·jenkins·visual studio
WarPigs5 小时前
Visual Studio问题记录
ide·windows·visual studio
struggle20255 小时前
LLMControlsArm开源程序是DeepSeek 控制熊猫机械臂
人工智能·python·cmake·jupyternotebook·deepseek
love530love6 小时前
【笔记】旧版MSYS2 环境中 Rust 升级问题及解决过程
开发语言·人工智能·windows·笔记·python·rust·virtualenv
超级土豆粉6 小时前
从0到1写一个适用于Node.js的User Agent生成库
linux·ubuntu·node.js