cmake - cmake 未定义类型名 loc_t (gpslib)
问题描述
这是我的实际代码:
我正在尝试为gpslib创建一个 cmake 构建系统。
cmake_minimum_required(VERSION 2.6)
set(PROJECT_NAME LOGGER)
project(${PROJECT_NAME})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "res/cmake/Modules/")
add_library(gps_lib STATIC "")
target_link_libraries(gps_lib m)
target_include_directories(gps_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src ${LIBM_INCLUDE_DIRS})
target_sources(gps_lib PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src/gps.h
${CMAKE_CURRENT_SOURCE_DIR}/src/nmea.h
${CMAKE_CURRENT_SOURCE_DIR}/src/serial.h)
target_sources(gps_lib PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/gps.c
${CMAKE_CURRENT_SOURCE_DIR}/src/nmea.c
${CMAKE_CURRENT_SOURCE_DIR}/src/serial.c)
target_link_libraries(gps_lib PUBLIC ${LIBM_LIBRARIES})
add_executable(${PROJECT_NAME} examples/position_logger.c)
target_link_libraries(${PROJECT_NAME}gps_lib)
有人知道如何构建这个项目吗?
这是错误消息:
/usr/bin/ld: libgps_lib.a(gps.c.o): in function `gps_deg_dec': gps.c:(.text+0x2d5): undefined reference to `round'
/usr/bin/ld: gps.c:(.text+0x312): undefined reference to `round'
在 res/cmake/Modules 中有一个 FindLibM.cmake Module 来自FindLibM.cmake
由于compor answear而编辑:
- 为 gps_lib 添加了链接库
- 从 PROJECT_NAME 链接库中删除了 LIBM_LIBRARIES
不会改变任何东西
感谢@KamilCuk,我解决了这个问题。
link_libraries(m) or target_link_libraries(gps_lib m) (only for the target gps_lib)
必须添加到 cmake 文件中
感谢所有帮助我找到错误的人!
解决方案
第一个target_sources
应该是
target_include_directories(gps_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
似乎它找不到loc_t
as 中定义的定义gps.h
,因此上面的行将通知目标包含目录以搜索它。
此外,最后一行应该是
target_link_libraries(${PROJECT_NAME} ${LIBM_LIBRARIES} gps_lib)
没有${gps_lib}
变量,gps_lib
是目标的名称。
由于OP编辑而更新
我不确定您是否更改了示例,但您引用的初始示例代码不包括math.h
因此数学库应gps_lib
仅用作目标的依赖项
target_link_libraries(gps_lib PUBLIC ${LIBM_LIBRARIES})
推荐阅读
- spring - 没有“@Column”注释的 JPA 实体类
- django - Django 在本地环境中不断重定向到 https
- amazon-web-services - NGINX + S3 没有正确路由路径
- javascript - 如何在 ReactJS 中将 usestate 与对象一起使用?
- python - Python中带有数据集的列表中的for循环
- assembly - 如何使用 nasm 从一个片段跳转到另一个片段
- r - 无需迭代即可汇总多个变量
- amazon-lex - 需要捕捉和回应不在槽中的话语
- mongoose - 在 Mongoose 模型中创建文档的数组中创建 2 个对象
- php - 如何添加 POST 方法