Skip to content

[maintenence item] Remove transitive include dependencies #944

Open
@ThisIsFineTM

Description

@ThisIsFineTM

Reliance on transitive includes can make the codebase more fragile for refactoring efforts both within the library codebase and for dependent projects. I ran into this issue when experimenting with zim-tools, where libzim's version.h has a dependency on <iostream>, but if <iostream> isn't included before #include <zim/version.h> there is a build error.

LIBZIM_API void printVersions(std::ostream& out = std::cout);

https://github.com/openzim/zim-tools/blob/768cbe534156a44abe7678493c12e52b2a3194a3/src/version.h#L23

There is a clang tool called Include What You Use (IWYU) which can do most of the work for this (with some spot checking).

If this is approved I can put in a PR.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions