如何从Azure Iot SDK C示例修复此cmake错误?

问题描述

我正在尝试从Azure IoT(https://github.com/Azure/azure-iot-sdk-c.git)构建iotedge_downstream_device_sample示例。我已按照https://github.com/Azure/azure-iot-sdk-c/blob/master/doc/devbox_setup.md#linux中概述的步骤进行操作。

将cmake_minimum_required(VERSION 3.10)添加到azure-iot-sdk-c / iothub_client / samples / iotedge_downstream_device_sample / CMakeLists.txt的第三行后,我运行“ cmake”,得到以下错误。

CMakeLists.txt中的

CMake错误:5(如果): 如果给定参数: “不”“与”“不”“与”“不”“开” 指定了未知参数

-配置不完整,发生了错误!

我的CMakeLists.txt文件的第5-7行是: 如果(不是$ {use_mqtt}而不是$ {use_amqp}而不是$ {use_http}) 消息(FATAL_ERROR“在没有协议支持的情况下生成iotedge_downstream_device_sample”) endif()

我对错误消息感到困惑。是否未定义“ use_mqtt” /“ use_amqp” /“ use_http”的问题?我希望有人提到它,而不是“ NOT” /“ AND” /“ ON”一词。我尝试添加以下行以使用http和mqtt / amqp启用它们,但它没有任何效果: 选项(use_http“如果要使用http则将use_http设置为ON,将OFF设置为不使用http” ON) 选项(use_mqtt“如果要使用mqtt,则将use_mqtt设置为ON;如果不使用mqtt,则将其设置为OFF”;) 选项(use_http“如果要使用amqp,则将use_amqp设置为ON;如果不使用amqp,则设置为OFF”;)

我不太了解cmake。

为完整起见,这是我的整个CMakeLists.txt文件: #版权(c)Microsoft。版权所有。 #根据MIT许可获得许可。有关完整的许可证信息,请参见项目根目录中的LICENSE文件。 cmake_minimum_required(版本3.10)

如果(不是$ {use_mqtt}而不是$ {use_amqp}而不是$ {use_http}) 消息(FATAL_ERROR“在没有协议支持的情况下生成iotedge_downstream_device_sample”) endif()

compileAsC99()

set(iotedge_downstream_c_files iotedge_downstream_device_sample.c )

IF(WIN32) #windows需要此定义 add_definitions(-D_CRT_SECURE_NO_WARNINGS) ENDIF(WIN32)

include_directories(。)

add_executable(iotedge_downstream_device_sample $ {iotedge_downstream_c_files}) if($ {build_as_dynamic}) target_link_libraries(iotedge_downstream_device_sample iothub_client_dll) 其他() target_link_libraries(iotedge_downstream_device_sample iothub_client)

if(${use_http})
    target_link_libraries(iotedge_downstream_device_sample iothub_client_http_transport)
    add_definitions(-DUSE_HTTP)
endif()

if(${use_amqp})
    target_link_libraries(iotedge_downstream_device_sample iothub_client_amqp_transport iothub_client_amqp_ws_transport)
    linkUAMQP(iotedge_downstream_device_sample)
    add_definitions(-DUSE_AMQP)
endif()

if(${use_mqtt})
    target_link_libraries(iotedge_downstream_device_sample iothub_client_mqtt_transport iothub_client_mqtt_ws_transport)
    linkMqttLibrary(iotedge_downstream_device_sample)
    add_definitions(-DUSE_MQTT)
endif()

endif()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)