gcc - 通过 cmake 链接 libmodbus
问题描述
这就是我所拥有的CMakeLists.txt
:
cmake_minimum_required(VERSION 3.10.2)
# set the project name and version
project(ReadEncoder VERSION 1.0)
# specify the C++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
add_compile_options(-Wall -Wextra -Wpedantic)
#However, the file(GLOB...) allows for wildcard additions:
file(GLOB SOURCES "src/*.c")
#For the shared library:
find_path(Modbus_INCLUDE_DIR modbus/modbus.h
HINTS
/opt/libmodbus/include/
)
find_library(Modbus_LIBRARIES NAMES modbus
HINTS
/opt/libmodbus/lib/
)
include_directories(
${Modbus_INCLUDE_DIR}/modbus
)
# add the executable
add_executable(ReadEncoder ${SOURCES})
我这样做:
cmake .
make
但我得到:
[100%] Linking C executable ReadEncoder
CMakeFiles/ReadEncoder.dir/src/ReadEncoder.c.o: In function `main':
ReadEncoder.c:(.text+0x35): undefined reference to `modbus_new_tcp'
ReadEncoder.c:(.text+0x45): undefined reference to `modbus_connect'
ReadEncoder.c:(.text+0x58): undefined reference to `modbus_strerror'
ReadEncoder.c:(.text+0x85): undefined reference to `modbus_free'
ReadEncoder.c:(.text+0xa5): undefined reference to `modbus_read_registers'
ReadEncoder.c:(.text+0xbc): undefined reference to `modbus_strerror'
ReadEncoder.c:(.text+0x13c): undefined reference to `modbus_close'
ReadEncoder.c:(.text+0x148): undefined reference to `modbus_free'
这里有什么问题?Libmodbus 安装在我指向 cmake 的位置,我检查了。我是新手,所以也许它是非常基本的东西。
解决方案
推荐阅读
- javascript - JS中的本地存储不加载项目问题
- sql - 如何在另一列上选择具有条件的值
- swift - Apple Sign In - 如何让用户邀请他人?
- java - WebTestClient 返回 IllegalStateException: block()/blockFirst()/blockLast() 是阻塞的,线程不支持
- groovy - NiFi InvokeHttp:如何在没有 ExecuteGroovyScript 的情况下使用 multipart/form-data 发送多个文件
- c# - nullreferenceexception、C#、WPF 的不清楚的问题
- web-applications - 如果我想使用两个下拉菜单中的值并形成一个页面,我应该使用哪些事件处理程序?
- c# - 在 CosmosDB SDK v3.0 同步计数查询中使用 LINQ 时如何查询布尔值?
- python - Pygame.mixer 不会初始化通道(单声道与立体声)
- oracle - Oracle Apex Column "CUSTOMER_ID" specified for attribute "" has not been found in data source