[QBS] Generate pre compiled headers

Christian Kandeler christian.kandeler at digia.com
Wed May 21 11:20:18 CEST 2014


On 05/21/2014 12:08 AM, olivier musse wrote:
> Hi,
>
> I want to create a module to automatically create and compile a pre
> compile header file in my project
> For that I create the following module

Why? The cpp module supports this already; see 
http://qt-project.org/doc/qbs-1.2/cpp-module.html#precompiledheader. If 
you are interested in the implementation, you can find it under 
share/qbs/modules/cpp/ in the qbs sources.


Christian


> ----- generatePCH.qbs
> importqbs
>
> import  qbs.TextFile
>
> import  qbs.FileInfo
>
> Module  {
>
>      Rule  {
>
>          inputs:  ['

']
>
>          multiplex:true
>
>          Artifact  {
>
>              fileName:  "pch_headers.h"
>
>              fileTags:  [  "hpp"  ]
>
>          }
>
>          prepare:  {
>
>              var  cmd  =  new  JavaScriptCommand();
>
>              cmd.description  =  "generating  precompiled  header  file";
>
>              cmd.sourceCode  =  function()  {
>
>                  var  fileContent="#if  defined  __cplusplus\n";
>
>                  for(var  i  in  inputs.pch)
>
>                  {
>
>                      fileContent+="#include  \""  +FileInfo.fileName(inputs.pch[i].filePath)  +  "\"\n";
>
>                  }
>
>                  fileContent+="#endif"
>
>                  var  file  =  new  TextFile(output.filePath,  TextFile.WriteOnly);
>
>                  file.truncate();
>
>                  file.write(fileContent);
>
>                  file.close();
>
>              }
>
>              return  cmd;
>
>          }
>
>      }
>
>      Depends  {  name  :  "cpp"}
>
>      cpp.cxxPrecompiledHeader:product.buildDirectory+"/pch_headers.h"
>
> }
>
> And In my project I can simply call
>   Depends  {  name  :  "generatePCH"  }
> Group{
>              name:"PchHeaders"
>              files:['commondefs.h','otherfile.h']
>              fileTags:['pch']
>          }
>
>
> I have some questions :
> 1) The file pch_headers.h is well generated on the build directory if in
> my PchHeaders Group I select files with extension other than .h . When
> I use .h extension, the pch_headers.h is not generated as if there are
> some interferences between the cpp module "hpp" tag and my "pch" tag.
> Does it may be the issue? Can I do something for it to work?
> 2) the line
> cpp.cxxPrecompiledHeader:product.buildDirectory+"/pch_headers.h" seem to
> have no effect when put in the Module. I try to put it directly in the
> product and then it warn me that the artifact is not in the list of
> source files. For the pch_headers.h to be pre compiled, I need to put it
> manually in the source directory and add to project
> Group{
> files:[pch_headers.h]}
> cpp.cxxPrecompiledHeader:"pch_headers.h"
>
> In that case it compiled but as soon as i'm trying to use the generated
> pch_headers.h located in build directory it does nothing.
>
> Am I doing something wrong?
>
> Many thanks for help
>
> Regards
>
>
>
>
> _______________________________________________
> QBS mailing list
> QBS at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qbs
>




More information about the Qbs mailing list