CMakeLists.txt 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. ####################
  2. # Nodeset Examples #
  3. ####################
  4. ###################
  5. # Custom XML #
  6. ###################
  7. # generate namespace from XML file
  8. ua_generate_nodeset_and_datatypes(
  9. NAME "example"
  10. FILE_NS "${PROJECT_SOURCE_DIR}/examples/nodeset/server_nodeset.xml"
  11. )
  12. # The .csv file can be created from within UaModeler or manually
  13. ua_generate_nodeid_header(
  14. NAME "example_nodeids"
  15. ID_PREFIX "EXAMPLE_NS"
  16. FILE_CSV "${PROJECT_SOURCE_DIR}/examples/nodeset/server_nodeset.csv"
  17. )
  18. add_example(server_nodeset server_nodeset.c ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_example.c ${PROJECT_BINARY_DIR}/src_generated/example_nodeids.h)
  19. if(UA_COMPILE_AS_CXX)
  20. set_source_files_properties(${PROJECT_BINARY_DIR}/src_generated/ua_namespace_example.c PROPERTIES LANGUAGE CXX)
  21. endif()
  22. ###################
  23. # PLCopen Nodeset #
  24. ###################
  25. # PLCopen requires the full ns0 as basis
  26. if(UA_NAMESPACE_ZERO STREQUAL "FULL")
  27. # Generate types and namespace for DI
  28. ua_generate_nodeset_and_datatypes(
  29. NAME "di"
  30. FILE_CSV "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/DI/OpcUaDiModel.csv"
  31. FILE_BSD "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/DI/Opc.Ua.Di.Types.bsd"
  32. NAMESPACE_IDX 2
  33. FILE_NS "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/DI/Opc.Ua.Di.NodeSet2.xml"
  34. INTERNAL
  35. )
  36. # generate PLCopen namespace which is using DI
  37. ua_generate_nodeset_and_datatypes(
  38. NAME "plc"
  39. # PLCopen does not define custom types. Only generate the nodeset
  40. FILE_NS "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/PLCopen/Opc.Ua.Plc.NodeSet2.xml"
  41. # PLCopen depends on the di nodeset, which must be generated before
  42. DEPENDS "di"
  43. INTERNAL
  44. )
  45. add_example(server_nodeset_plcopen server_nodeset_plcopen.c
  46. ${PROJECT_BINARY_DIR}/src_generated/ua_types_di_generated.c
  47. ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_di.c
  48. ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_plc.c)
  49. add_dependencies(server_nodeset_plcopen open62541-generator-ns-plc)
  50. target_include_directories(server_nodeset_plcopen PRIVATE ${PROJECT_SOURCE_DIR}/src) # needs an internal header
  51. endif()