栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

CSerialPort教程(6) - 以第三库方式使用CSerialPort

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CSerialPort教程(6) - 以第三库方式使用CSerialPort

CSerialPort教程(6) - 以第三库方式使用CSerialPort

如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033

文章目录
  • CSerialPort教程(6) - 以第三库方式使用CSerialPort
    • 前言
    • 1. 使用cmake生成CSerialPort动态库
    • 2. 以cmake方式引用CSerialPort的动态库【推荐】
      • 2.1 通过find_package自动搜索CSerialPort头文件及动态库【推荐】
      • 2.2 手动指定头文件及动态库
    • 3. QT中使用CSerialPort的动态库
    • 4. MFC中使用CSerialPort的动态库
      • 4.1 添加头文件路径
      • 4.2 添加库文件路径

环境:

系统:windows 10/CentOS 7
cmake: 3.22.1
前言

CSerialPort项目是基于C++的轻量级开源跨平台串口类库,用于实现跨平台多操作系统的串口读写。

CSerialPort项目的开源协议自 V3.0.0.171216 版本后采用GNU Lesser General Public License v3.0

为了让开发者更好的使用CSerialPort进行开发,特编写基于4.x版本的CSerialPort教程系列。

本文将介绍如何以第三方库的方式调用CSerialPort。

CSerialPort项目地址:

  • https://github.com/itas109/CSerialPort
  • https://gitee.com/itas109/CSerialPort

注意事项:

  • x64动态库只能用于x64的程序调用,x86同理
  • debug的动态库只能用于动态库程序调用,release同理
1. 使用cmake生成CSerialPort动态库
$ git clone https://github.com/itas109/CSerialPort
$ cd CSerialPort
$ mkdir bin
$ cd bin
$ cmake .. -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON
$ cmake --build . --config Debug
$ cmake --install . --config Debug

CSerialPort安装目录结构:

$ tree
.
├── include
│   └── CSerialPort
│       ├── osplatformutil.h
│       ├── SerialPortbase.h
│       ├── SerialPort_global.h
│       ├── SerialPort.h
│       ├── SerialPortInfobase.h
│       ├── SerialPortInfo.h
│       ├── SerialPortInfoUnixbase.h
│       ├── SerialPortInfoWinbase.h
│       ├── SerialPortUnixbase.h
│       ├── SerialPortWinbase.h
│       └── sigslot.h
└── lib
    ├── cmake
    │   └── CSerialPort
    │       └── cserialport-config.cmake
    └── libcserialport.so
2. 以cmake方式引用CSerialPort的动态库【推荐】
注意: 
cmake方式同样可用于控制台项目、MFC项目和QT项目等。
2.1 通过find_package自动搜索CSerialPort头文件及动态库【推荐】

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)

project(CommConsole LANGUAGES CXX)

find_package(CSerialPort)
if (CSerialPort_FOUND)
	include_directories(${CSerialPort_INCLUDE_DIR})
	add_executable( ${PROJECT_NAME} main.cpp)
	target_link_libraries (${PROJECT_NAME} ${CSerialPort_LIBRARY})
else()
	message(STATUS "Not found system CSerialPort")
endif ()

注意:
出现如下错误,可设置CMAKE_PREFIX_PATH指定搜索路径,如cmake .. -DCMAKE_PREFIX_PATH="D:/CommConsole/CSerialPort/bin/install"

Could not find a package configuration file provided by "CSerialPort" with
  any of the following names:

    CSerialPortConfig.cmake
    cserialport-config.cmake
2.2 手动指定头文件及动态库

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)

project(CommConsole LANGUAGES CXX)

# add by itas109
set(CSerialPortRootPath "${PROJECT_SOURCE_DIR}/CSerialPort/bin/install")
include_directories(${CSerialPortRootPath}/include)
link_directories(${CSerialPortRootPath}/lib)
# end by itas109

add_executable(${PROJECT_NAME}
    main.cpp
)

# add by itas109
if (WIN32)
	target_link_libraries( ${APP_NAME} libcserialport)
elseif(UNIX)
	target_link_libraries( ${APP_NAME} cserialport)
endif ()
# end by itas109

注意:
CSerialPortRootPath表示CSerialPort安装目录

3. QT中使用CSerialPort的动态库
注意:
QT的cmake方式与第二节类似

CommQT.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

ConFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += 
    main.cpp 
    mainwindow.cpp

HEADERS += 
    mainwindow.h

FORMS += 
    mainwindow.ui

# add by itas109
# 1. headers
INCLUDEPATH += "$$PWD/CSerialPort/bin/install/include"

# 2. add cserialport libs
win32:LIBS += "-L$$PWD/CSerialPort/bin/install/lib"  -lcserialport
unix:LIBS += "-L$$PWD/CSerialPort/bin/install/lib" -lcserialport

# 3. define UNICODE
DEFINES += _UNICODE
# end by itas109

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
4. MFC中使用CSerialPort的动态库
注意:
MFC的cmake方式与第二节类似
4.1 添加头文件路径

右键【CommMFC根命名空间】-【属性】-【C/C++】-【常规】-【附加包含目录】-添加CSerialPort的头文件目录

D:CommMFCCSerialPortbininstallinclude

$(ProjectDir)..CSerialPortbininstallinclude
4.2 添加库文件路径
  • 添加库文件目录

右键【CommMFC根命名空间】-【属性】-【链接器】-【常规】-【附加库目录】-添加CSerialPort的库文件目录

D:CommMFCCSerialPortbininstalllib

$(ProjectDir)..CSerialPortbininstalllib
  • 添加库附加依赖项

右键【CommMFC根命名空间】-【属性】-【链接器】-【输入】-【附加依赖项】-添加libcserialport.lib


License

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎

如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033


Reference:

  1. https://github.com/itas109/CSerialPort
  2. https://gitee.com/itas109/CSerialPort
  3. https://blog.csdn.net/itas109
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号