<div dir="auto">In general, I'm wary of tools that try to analyze dependency information on their own ("best-guess" dependency analysis). -MMD and /showIncludes are preprocessor directives, but they are usually used in the context of a full TU compilation (in the case of tools attempting to extract dependency information, such as Ninja). As far as I am aware, tools using these options for dependency information are already performing full semantic analysis as part of dependency extraction. I anticipate that it will be similar with modules.<div dir="auto"><br></div><div dir="auto">Adding features to explicitly allow tools to do "best-guess" dependency analysis feels too close to promoting what *I* consider bad behavior, but I'm very opinionated on the subject. Others may have differing opinions.</div><div dir="auto"><br></div><div dir="auto">In general, I'd rather make tools that behave more correctly (and facilitate the creation of those tools through language and library design) than to try and cater to tools that do things poorly.</div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Dec 1, 2018, 08:38 JeanHeyd Meneide <<a href="mailto:phdofthehouse@gmail.com">phdofthehouse@gmail.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div><div>Dear SG15,<br><br></div> I wanted to move away from the talk of package managers and other such things for a bit, to talk about something closer to the build system. Dependency management is becoming a bit of a hot topic now that modules have been pushed to Core for wording review. std::embed (<a href="https://thephd.github.io/vendor/future_cxx/papers/d1040.html" target="_blank" rel="noreferrer">p1040</a>) is facing significant uphill challenges because it requires full Semantic Analysis to communicate dependency information, which is a no-go for preprocessor scanners and things like /showIncludes or -MMD.<br><br></div> To address the problem of dependency tracking for a source file, I wanted to add a module directive called module-requires, <a href="https://thephd.github.io/vendor/future_cxx/papers/d1130.html" target="_blank" rel="noreferrer">p1130</a>.<br><br></div><div> This paper is supposed to allow folks the ability to say "some resource out there should trigger a re-compile of this file / module if it ever changes". If we get module:private;, we could tag it to the module's implementation only as well.<br><br></div><div>Any thoughts?<br><br></div><div>Sincerely,<br></div><div>JeanHeyd Meneide<br></div></div>
_______________________________________________<br>
Tooling mailing list<br>
<a href="mailto:Tooling@isocpp.open-std.org" target="_blank" rel="noreferrer">Tooling@isocpp.open-std.org</a><br>
<a href="http://www.open-std.org/mailman/listinfo/tooling" rel="noreferrer noreferrer" target="_blank">http://www.open-std.org/mailman/listinfo/tooling</a><br>
</blockquote></div>