适用VS2019尝试生成跨平台的动态库

1、

2、步骤

2.1 创建一个CMake项目

VS2019菜单栏——新建——项目
在这里插入图片描述

在搜索栏输入cmake,双击出现的CMake项目
在这里插入图片描述
配置好项目的名称和路径,点击创建
在这里插入图片描述
创建好的项目的目录层次如下:
在这里插入图片描述

testDll目录下的CMakeLists.txt内容如下:

# CMakeList.txt: testDll 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)

# 将源代码添加到此项目的可执行文件。
add_executable (testDll "testDll.cpp" "testDll.h")

# TODO: 如有需要,请添加测试并安装目标。

和testDll目录同级的CMakeLists.txt内容如下:

# CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置
# 并包含子项目。
#
cmake_minimum_required (VERSION 3.8)

project ("testDll")

# 包含子项目。
add_subdirectory ("testDll")

2.2 写一个简单的计算加法的函数

在testDll.h中添加:

#ifdef _WIN32
_declspec(dllexport) int add(int a, int b);
#endif // _WIN32

#ifdef __linux__
int add(int a, int b);
#endif

在testDll.cpp中添加:

int add(int a, int b)
{
	return a + b;
}

2.3 调整CMakeLists.txt

调整为

# CMakeList.txt: testDll 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)

# 将源代码添加到此项目的可执行文件。
project(add)
# 将源代码添加到此项目的可执行文件。
add_library(testdll SHARED "testDll.cpp" "testDll.h")

# TODO: 如有需要,请添加测试并安装目标。

就是将原有的

add_executable (testDll "testDll.cpp" "testDll.h")

删除掉,改成了

project(add)
# 将源代码添加到此项目的可执行文件。
add_library(testdll SHARED "testDll.cpp" "testDll.h")

2.4 Windows下编译x86的库

2.4.1 配置x86-release

需要x86-release的配置,这里没有因此需要添加,如果有的话可跳过
在这里插入图片描述
配置页面左上角点击“+”号,在弹出页面选择需要的配置,之后点击"选择”按钮
在这里插入图片描述
就会在左边的展示栏中出现选中的配置
在这里插入图片描述

接着Ctrl+s保存修改,这里主要是修改了CMakeSettings.json文件。保存之后会自动生成CMake。
注:切换配置时也会重新生成

2.4.2 选择启动项

在这里插入图片描述
在自动执行CMake生成之后这里就有这个dll了,接着点击选中,选择启动项的位置就变了
在这里插入图片描述

2.4.3 生成动态库

Ctrl+b,VS就会生成dll了。如果代码有错误,可根据提示修改,直至编译正常。

2.5 linux下编译动态库

注:要先确保远程的linux系统存在以下工具集:
cmake、gcc、gdb、rsync、zip、ninja-build

没有的话可以使用以下命令安装:
根据linux系统选择使用apt还是yum

sudo apt update
sudo apt install -y build-essential gdb rsync zip openssh-server

sudo yum update
sudo yum install -y build-essential gdb rsync zip openssh-server 

2.5.1 参考2.4.1设置Linux-GCC-Release配置X64

在这里插入图片描述

2.5.2 配置远程linux计算机

如果本机是linux系统的另说
VS菜单栏:工具——选项——跨平台——连接管理器——点击添加,填入远程计算机的ip、端口、用户名、密码即可,点击确定关闭页面
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
接着点最下面的高级选项
在这里插入图片描述
IntelliSense模式选择linux-gcc-x64,CMake可执行文件填写对应的路径,可以适用which命令查看
在这里插入图片描述
在这里插入图片描述
保存修改

2.5.3 选择项目配置,生成动态库

选择Linux-GCC-Release,CMake会执行执行,等待完成
在这里插入图片描述
CMake完成后选择启动项的位置出现.so文件
在这里插入图片描述
查看日志提示编译生成的相关文件在/home/test/.vs/testDll/e0783f20-c071-4a34-aeae-f53e004596a6/out/build/Linux-GCC-Release,到目录下看看
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
目录下以及testDll目录下都没有.so文件。
是的,没有,因为我们还在执行生成动态库的步骤呢。。接下来回到VS生成项目
在这里插入图片描述
在这里插入图片描述

再去对应目录看看
在这里插入图片描述

到这里,再不修改任何代码的前提下,就完成了一个跨平台的动态库的编译了

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值