GUI refactoring: #include dependences between source subdirectories should form a directed acyclic graph
As explained orally on May 7:
To inspect #include dependences, run cd build; cmake .. -DALLCONFIG=ON; make doxylong
; point browser to .../build/html/long/index.html; goto Files > File List > GUI to see directory dependence graph.
Development cycle here: Start from fresh commit, move files and update #include statements, rerun cmake ..; make doxylong
, inspect in browser. Depending on outcome, do git stash
or git commit
. Proceed with next action. No need to compile and test after each move action.
Only before submitting a merge request, build and run ctest. Also, before submitting a MR, run clang-format -i ˋfchˋ
which will alphabetically reorder all include directives.
Main activities to disentangle directories:
- move files around
- split directories
- create new directories
- rename directories, and possibly files, to make intent clearer
- move function out of class to an algorithm source file in a higher-level directory
- move function A::f(B..) into B::f(A..)
Note that forward declarations won't help: They break dependences for the .h, but not for the .cpp files.
I don't expect a full solution at once. Every MR that somehow simplifies the graph is welcome.