首页 > 编程语言 >[C++][CMake][Error] set_target_properties called with incorrect number of arguments

[C++][CMake][Error] set_target_properties called with incorrect number of arguments

时间:2024-11-30 12:21:51浏览次数:4  
标签:incorrect set CMake target libusbmuxd usbmuxd properties PROPERTIES

1 简介

这篇文章将探讨了在使用 CMake 构建 C++ 项目时,调用 set_target_properties 函数时参数数量不正确所引发的问题。

2 错误案例

以下为可能发生错误的案例

include_directories (${CMAKE_SOURCE_DIR}/common)
find_package(Threads)

add_library (libusbmuxd SHARED libusbmuxd.c sock_stuff.c ${CMAKE_SOURCE_DIR}/common/utils.c)
find_library (PTHREAD pthread)
target_link_libraries (libusbmuxd ${CMAKE_THREAD_LIBS_INIT})

# 'lib' is a UNIXism, the proper CMake target is usbmuxd
# But we can't use that due to the conflict with the usbmuxd daemon,
# so instead change the library output base name to usbmuxd here
set_target_properties(libusbmuxd PROPERTIES OUTPUT_NAME usbmuxd)
set_target_properties(libusbmuxd PROPERTIES VERSION ${LIBUSBMUXD_VERSION})
set_target_properties(libusbmuxd PROPERTIES SOVERSION ${LIBUSBMUXD_SOVERSION})

install(TARGETS libusbmuxd
    ARCHIVE DESTINATION lib${LIB_SUFFIX}
    LIBRARY DESTINATION lib${LIB_SUFFIX}
)
install(FILES usbmuxd.h usbmuxd-proto.h DESTINATION include)

以上文件可能报错如下:

CMake error at CMakeLists.txt:12 (set_target_properties):
    set_target_properties called with incorrect number of arguments

3 原因分析

set_target_properties 函数的语法格式为

SET_TARGET_PROPERTIES(
    target1 target2 ... targetM
    PROPERTIES 
    prop1 val1 prop2 val2 ... propN valN
)

变量 LIBUSBMUXD_VERSION 和 LIBUSBMUXD_SOVERSION 未定义,因此命令的语法是

SET_TARGET_PROPERTIES(target PROPERTIES name value)

很显然,这里少了 value 变量

4 解决方法

要解决这个问题,请尝试引用变量;使用 $ {LIBUSBMUXD_SOVERSION} 应确保即使变量未定义,它也会采用空字符串的值,从而遵守语法。

include_directories (${CMAKE_SOURCE_DIR}/common)
find_package(Threads)

add_library (libusbmuxd SHARED libusbmuxd.c sock_stuff.c ${CMAKE_SOURCE_DIR}/common/utils.c)
find_library (PTHREAD pthread)
target_link_libraries (libusbmuxd ${CMAKE_THREAD_LIBS_INIT})

# 'lib' is a UNIXism, the proper CMake target is usbmuxd
# But we can't use that due to the conflict with the usbmuxd daemon,
# so instead change the library output base name to usbmuxd here
set_target_properties(libusbmuxd PROPERTIES OUTPUT_NAME usbmuxd)
set_target_properties(libusbmuxd PROPERTIES VERSION " ${LIBUSBMUXD_VERSION}")
set_target_properties(libusbmuxd PROPERTIES SOVERSION " ${LIBUSBMUXD_SOVERSION}")

install(TARGETS libusbmuxd
    ARCHIVE DESTINATION lib${LIB_SUFFIX}
    LIBRARY DESTINATION lib${LIB_SUFFIX}
)
install(FILES usbmuxd.h usbmuxd-proto.h DESTINATION include)

标签:incorrect,set,CMake,target,libusbmuxd,usbmuxd,properties,PROPERTIES
From: https://www.cnblogs.com/Zheng-Bicheng/p/18578265

相关文章

  • Linux常用命令之setfacl命令详解
    setfacl命令详解setfacl命令是Linux操作系统中用于设置文件或目录的访问控制列表(AccessControlLists,简称ACL)的工具。ACL提供了比传统Unix权限更细粒度的访问控制,可以为特定用户或用户组设置不同的权限。下面是关于setfacl命令的详细说明,包括基本语法、常用选项......
  • 将 Paddle2ONNX 的项目构建方式从 setup.py 迁移到 pyproject.toml
    1简介在软件开发中,项目构建方式的选择对项目的可维护性,可扩展性及与其他工具的兼容性至关重要.随着Python生态系统的进步,使用pyproject.toml文件管理项目依赖和构建配置成为一种新兴趋势.相较于setup.py,pyproject.toml采用TOML语法,简化配置文件读写;提供灵......
  • 为 Paddle2ONNX 添加对 Opset 18 的支持
    1简介随着ONNX标准的不断更新,保持Paddle2ONNX与最新版本的兼容性显得尤为重要。本篇文章将详细介绍如何为Paddle2ONNX项目升级其依赖的ONNXOpset版本。2添加对Opset18的支持2.1升级ONNX依赖库版本支持Opset18前我们需要修改ONNX的branch参数到最新的co......
  • 集合类型的依赖注入问题例子,例如:list,array,set,map,properties
    CollectionBean类packagecom.xqw.pojo;importjava.util.*;publicclassCollectionBean{privateList<String>lists;privateInteger[]arrs;privateSet<String>sets;privateMap<String,String>maps;privatePropert......
  • 解释下offsetWidth、clientWidth、scrollWidth这三者的区别是什么?
    在前端开发中,offsetWidth、clientWidth和scrollWidth都是用于获取元素尺寸的属性,但它们针对的范围不同,容易混淆。以下是对它们区别的解释:1.offsetWidth:含义:元素的可见宽度,包括padding、border和垂直滚动条(如果存在)。计算方式:width+padding-left+padding-right+......
  • AppContext GetData SetData的使用
    AppContext.GetData方法在.NET中用于获取应用程序上下文相关的数据。以下是关于它的详细使用介绍:1.所在命名空间及相关背景AppContext.GetData方法位于System.AppContext命名空间下。它提供了一种机制,允许在应用程序的不同部分(比如不同的程序集或者类库之间)以一种标准的方......
  • 16Java集合进阶(Set、Map集合、可变参数、斗地主案例)
    请先看我上篇文章15Java集合进阶(异常、集合)-CSDN博客一、Set系列集合1.1认识Set集合的特点Set集合是属于Collection体系下的另一个分支,它的特点如下图所示下面我们用代码简单演示一下,每一种Set集合的特点。//Set<Integer>set=newHashSet<>(); //无序、无索引、不重......
  • Paper Reading: Relating instance hardness to classifcation performance in a d
    目录研究动机文章贡献实例空间分析ISA框架实例空间构造足迹分析单个数据集的ISA硬度度量指标算法和性能评估特征选择实例空间表示和足迹实验结果案例研究:对于COVIDprognosis数据集的ISA分析案例研究:使用ISA检测COMPAS数据集算法偏差案例分析:使用ISA分析标签噪声数据......
  • [React]setState调用过于频繁的问题
    来自:文心一言在React中,如果setState被调用得太频繁,可能会出现状态没有按预期更新的情况。这是因为React为了性能优化,会批量更新状态,即便是连续快速调用setState,最终状态的更新仍会在一次渲染中执行。如果你尝试在某些异步操作(如事件监听器、网络请求或循环中)中连续多次调用setSt......
  • 【数据结构】此景只应天上有,人间难得几回闻 - 9. 领略Map与Set之巧妙
    本篇博客给大家带来的是二叉搜索树和哈希表的相关知识点.重点掌握:搜索树的删除操作,Map和Set的使用,哈希冲突的解决方法.文章专栏:Java-数据结构若有问题评论区见欢迎大家点赞评论收藏分享如果你不知道分享给谁,那就分享给薯条.你们的支持是我不断创作的动......