CMakeLists.txt 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. ####################
  2. # Nodeset Examples #
  3. ####################
  4. ###################
  5. # Custom XML #
  6. ###################
  7. # generate namespace from XML file
  8. ua_generate_nodeset(
  9. NAME "example"
  10. FILE "${PROJECT_SOURCE_DIR}/examples/nodeset/server_nodeset.xml"
  11. DEPENDS_TYPES "UA_TYPES"
  12. DEPENDS_NS "${UA_FILE_NS0}"
  13. )
  14. # The .csv file can be created from within UaModeler or manually
  15. add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/example_nodeset_ids.h
  16. PRE_BUILD
  17. COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/tools/generate_nodeid_header.py
  18. ${PROJECT_SOURCE_DIR}/examples/nodeset/server_nodeset.csv ${PROJECT_BINARY_DIR}/src_generated/example_nodeset_ids EXAMPLE_NS
  19. DEPENDS ${PROJECT_SOURCE_DIR}/tools/generate_nodeid_header.py
  20. ${PROJECT_SOURCE_DIR}/examples/nodeset/server_nodeset.csv)
  21. add_example(server_nodeset server_nodeset.c ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_example.c ${PROJECT_BINARY_DIR}/src_generated/example_nodeset_ids.h)
  22. if(UA_COMPILE_AS_CXX)
  23. set_source_files_properties(${PROJECT_BINARY_DIR}/src_generated/ua_namespace_example.c PROPERTIES LANGUAGE CXX)
  24. endif()
  25. ###################
  26. # PLCopen Nodeset #
  27. ###################
  28. # PLCopen requires the full ns0 as basis
  29. if(UA_NAMESPACE_ZERO STREQUAL "FULL")
  30. # Generate types for DI namespace
  31. ua_generate_datatypes(
  32. NAME "ua_types_di"
  33. TARGET_SUFFIX "types-di"
  34. NAMESPACE_IDX 2
  35. FILE_CSV "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/DI/OpcUaDiModel.csv"
  36. FILES_BSD "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/DI/Opc.Ua.Di.Types.bsd"
  37. )
  38. # generate DI namespace
  39. ua_generate_nodeset(
  40. NAME "di"
  41. FILE "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/DI/Opc.Ua.Di.NodeSet2.xml"
  42. TYPES_ARRAY "UA_TYPES_DI"
  43. INTERNAL
  44. DEPENDS_TYPES "UA_TYPES"
  45. DEPENDS_NS "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/Schema/Opc.Ua.NodeSet2.xml"
  46. DEPENDS_TARGET "open62541-generator-types-di"
  47. )
  48. # generate PLCopen namespace which is using DI
  49. ua_generate_nodeset(
  50. NAME "plc"
  51. FILE "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/PLCopen/Opc.Ua.Plc.NodeSet2.xml"
  52. INTERNAL
  53. DEPENDS_TYPES
  54. "UA_TYPES" "UA_TYPES_DI"
  55. DEPENDS_NS
  56. "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/Schema/Opc.Ua.NodeSet2.xml"
  57. "${PROJECT_SOURCE_DIR}/deps/ua-nodeset/DI/Opc.Ua.Di.NodeSet2.xml"
  58. DEPENDS_TARGET "open62541-generator-ns-di"
  59. )
  60. add_example(server_nodeset_plcopen server_nodeset_plcopen.c
  61. ${PROJECT_BINARY_DIR}/src_generated/ua_types_di_generated.c
  62. ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_di.c
  63. ${PROJECT_BINARY_DIR}/src_generated/ua_namespace_plc.c)
  64. add_dependencies(server_nodeset_plcopen open62541-generator-ns-plc)
  65. target_include_directories(server_nodeset_plcopen PRIVATE ${PROJECT_SOURCE_DIR}/src) # needs an internal header
  66. endif()