>It's expected that the generator won't re-run, because the dependency parsing happens when building a cpp file. So, I guess, this explanation must be correct.
вт, 27 окт. 2020 г. в 15:22, Dan Pat <danni...@gmail.com>: > >As Christian said: The problem is that the cpp scanner is triggered by the > >generated cpp file, but there is no connection to the testinput.h because > >your cpp files is not including it. > > Sorry for getting back to this so late. I have missed a very important > detail - the generated cpp files do include the headers from which they are > generated. To illustrate, I followed Richard's advice and prepended the cpp > file with the line " #include "testinput.h" ". The modified Module > definition (never mind the hardcoded string - it's just a test): > > Module { > > id: testgen > > > Rule { > > inputs: ["genxx"] > > Artifact { > > id: artifact > > filePath: FileInfo.path(input.filePath) + "/" + > FileInfo.baseName(input.filePath) + "-gen.cpp" > > fileTags: ["cpp"] > > } > > prepare: { > > > var cmd = new JavaScriptCommand(); > > cmd.description = 'Running test generator'; > > cmd.sourceCode = function(){ > > var file = new TextFile(output.filePath, TextFile.WriteOnly); > > file.write("#include \"testinput.h\"\r\n const int c = 5;"); > > file.close(); > > > } > > > return cmd; > > > } > > } > > } > > > But the observed behavior is still the same. > > > чт, 17 сент. 2020 г. в 04:25, Richard Weickelt <rich...@weickelt.de>: > >> >> "testinput.h" file contains "#include "a.h" directive. Changing >> >> testinput.h results in a generator run followed by a C++ compiler run. >> >> Changing a.h results in no action, although in this case the generator >> >> is intended to reprocess its input. >> > >> > It's expected that the generator won't re-run, because the dependency >> > parsing happens when building a cpp file, i.e. all the headers are >> > dependencies of the object file, and the header files themselves are >> only >> > "passed through" by the scanning process. Though you might be able to >> > cheat by setting up a dummy cpp file that includes the top-level header >> > and making that an input to the generator rule. >> >> As Christian said: The problem is that the cpp scanner is triggered by the >> generated cpp file, but there is no connection to the testinput.h because >> your cpp files is not including it. >> >> If you could add the following lines to your generated cpp file: >> >> #ifdef IGNORED >> #include "testinput.h" >> #endif >> >> then this should be enough to make the cpp scanner think that you are >> actually including testinput.h and hence, it will see and track a.h as >> well. >> >> Richard >> _______________________________________________ >> Qbs mailing list >> Qbs@qt-project.org >> https://lists.qt-project.org/listinfo/qbs >> >
_______________________________________________ Qbs mailing list Qbs@qt-project.org https://lists.qt-project.org/listinfo/qbs