目前,我正在尝试构建open62541实现的PubSub示例。我已经检查过documentation on how to build the examples好几次了,但我还是弄不明白。
我已经尝试编译了PubSub教程示例。这包括tutorial_pubsub_publish.c和tutorial_pubsub_subscribe.c文件。在我克隆了存储库之后,我构建了如下的库:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -
DUA_ENABLE_AMALGAMATION=ON -DUA_ENABLE_PUBSUB=ON ..
make首先,我编译了publish示例,它可以工作:
gcc -std=c99 -o PubSub_Publish_Example open62541.c tutorial_pubsub_publish.c然后,我尝试以相同的方式编译订阅示例,如下所示:
gcc -std=c99 -o PubSub_Publish_Example open62541.c tutorial_pubsub_subscribe.c这就产生了很多错误--都是说“没有这样的文件或目录(第一个错误是#include " ua_architecture_base.h "),然后我尝试用ua_architecture_base.h编译它,得到其他丢失的文件或目录错误,等等……
我还试图编译open62541的整个include文件夹,但也得到了“没有这样的文件或目录”的错误:
gcc -std=c99 -I /home/theresa/Desktop/open62541/include -o PubSub_Subscribe_Example open62541.c tutorial_pubsub_subscribe.c我还注意到,在open62541管理员提供的所有示例中,tutorial_pubsub_subscribe.c文件是唯一不包含open62541.h文件夹的示例。相反,它还包含一些其他的头文件:
#include "ua_pubsub_networkmessage.h"
#include "ua_log_stdout.h"
#include "ua_server.h"
#include "ua_config_default.h"
#include "ua_pubsub.h"
#include "ua_network_pubsub_udp.h"
#ifdef UA_ENABLE_PUBSUB_ETH_UADP
#include "ua_network_pubsub_ethernet.h"
#endif
#include "src_generated/ua_types_generated.h"
#include <stdio.h>
#include <signal.h>那么,我如何编译和运行tutorial_pubsub_subscribe.c示例,为什么订阅者示例不包含open62541头文件?
发布于 2019-03-06 00:38:56
我成功地遵循了“使用Windows的CMake构建”的说明。
使用cmake-gui我选择了(高级)特性: UA_BUILD_EXAMPLES、UA_ENABLE_PUBSUB、UA_ENABLE_PUBSUB_INFORMATIONMODEL、UA_ENABLE_PUBSUB_INFORMATIONMODEL_METHODS和UA_NAMESPACE_ZERO = FULL
https://stackoverflow.com/questions/55002815
复制相似问题