Updated troubleshooting
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
* [General issues](#general-issues)
|
* [General issues](#general-issues)
|
||||||
* [Diagram generated with PlantUML is cropped](#diagram-generated-with-plantuml-is-cropped)
|
* [Diagram generated with PlantUML is cropped](#diagram-generated-with-plantuml-is-cropped)
|
||||||
|
* [YAML anchors and aliases are not fully supported](#yaml-anchors-and-aliases-are-not-fully-supported)
|
||||||
* [Class diagrams](#class-diagrams)
|
* [Class diagrams](#class-diagrams)
|
||||||
* ["fatal error: 'stddef.h' file not found"](#fatal-error-stddefh-file-not-found)
|
* ["fatal error: 'stddef.h' file not found"](#fatal-error-stddefh-file-not-found)
|
||||||
* [Sequence diagrams](#sequence-diagrams)
|
* [Sequence diagrams](#sequence-diagrams)
|
||||||
@@ -16,17 +17,51 @@
|
|||||||
### Diagram generated with PlantUML is cropped
|
### Diagram generated with PlantUML is cropped
|
||||||
When generating diagrams with PlantUML without specifying an output file format, the default is PNG.
|
When generating diagrams with PlantUML without specifying an output file format, the default is PNG.
|
||||||
Unfortunately PlantUML will not check if the diagram will fit in the default PNG size, and often the diagram
|
Unfortunately PlantUML will not check if the diagram will fit in the default PNG size, and often the diagram
|
||||||
will be be incomplete in the picture. A better option is to specify SVG as output format and then convert
|
will be incomplete in the picture. A better option is to specify SVG as output format and then convert
|
||||||
to PNG, e.g.:
|
to PNG, e.g.:
|
||||||
```bash
|
```bash
|
||||||
$ plantuml -tsvg mydiagram.puml
|
$ plantuml -tsvg mydiagram.puml
|
||||||
$ convert +antialias mydiagram.svg mydiagram.png
|
$ convert +antialias mydiagram.svg mydiagram.png
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### YAML anchors and aliases are not fully supported
|
||||||
|
`clang-uml` uses [yaml-cpp](https://github.com/jbeder/yaml-cpp) library, which
|
||||||
|
currently does not support
|
||||||
|
[merging YAML anchor dictionaries](https://github.com/jbeder/yaml-cpp/issues/41),
|
||||||
|
e.g. in the following configuration file the `main_sequence_diagram` will work,
|
||||||
|
but the `foo_sequence_diagram` will fail with parse error:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
compilation_database_dir: debug
|
||||||
|
output_directory: output
|
||||||
|
|
||||||
|
.sequence_diagram_anchor: &sequence_diagram_anchor
|
||||||
|
type: sequence
|
||||||
|
glob: []
|
||||||
|
start_from:
|
||||||
|
- function: 'main(int,const char**)'
|
||||||
|
|
||||||
|
diagrams:
|
||||||
|
main_sequence_diagram: *sequence_diagram_anchor
|
||||||
|
foo_sequence_diagram:
|
||||||
|
<<: *sequence_diagram_anchor
|
||||||
|
glob: [src/foo.cc]
|
||||||
|
start_from:
|
||||||
|
- function: 'foo(int,float)'
|
||||||
|
```
|
||||||
|
|
||||||
|
One option around this is to use some YAML preprocessor, such as
|
||||||
|
[yq](https://github.com/mikefarah/yq) on such file and passing
|
||||||
|
the configuration file to `clang-uml` using `stdin`, e.g.:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yq 'explode(.)' .clang-uml | clang-uml --config -
|
||||||
|
```
|
||||||
|
|
||||||
## Class diagrams
|
## Class diagrams
|
||||||
### "fatal error: 'stddef.h' file not found"
|
### "fatal error: 'stddef.h' file not found"
|
||||||
This error means that Clang cannot find some standard headers in the include paths
|
This error means that Clang cannot find some standard headers in the include paths
|
||||||
specified in the `compile_commands.json`. This typically happens on macos and sometimes on Linux, when
|
specified in the `compile_commands.json`. This typically happens on macOS and sometimes on Linux, when
|
||||||
the code was compiled with different Clang version than `clang-uml` itself.
|
the code was compiled with different Clang version than `clang-uml` itself.
|
||||||
|
|
||||||
One solution to this issue is to add the following line to your `CMakeLists.txt` file:
|
One solution to this issue is to add the following line to your `CMakeLists.txt` file:
|
||||||
|
|||||||
Reference in New Issue
Block a user