Re: qtcint.dll

From: Axel Naumann <Axel.Naumann_at_cern.ch>
Date: Fri, 10 Oct 2008 16:36:30 +0200


Hi,

the trunk of ROOT now allows to build the cint dlls for Qt4 by running   $ make qtcint

Cheers, Axel.

On 2008-10-02 17:37, Lee, Kerry T. (JSC-SF)[LMIT] wrote:
> Ok, I'll wait for the CINT solution and in the meantime use ACLIC.
>
> Thanks for your help.
>
> Kerry
>
> -----Original Message-----
> From: Fine, Valeri [mailto:fine_at_bnl.gov]
> Sent: Monday, September 29, 2008 5:41 PM
> To: Lee, Kerry T. (JSC-SF)[LMIT]; roottalk_at_pcroot.cern.ch
> Cc: qt-root-l_at_lists.bnl.gov
> Subject: RE: [ROOT] qtcint.dll
>
> Hello Kerry,
>

>> I am perfectly happy with using Qt3.  Currently, I am only interested in
>> using the QDate object. 

>
> QDate API was no changed much:
> http://doc.trolltech.com/4.4/qdate.html
> http://doc.trolltech.com/3.3/qdate.html
>
>> I am pointing to the Qt3 version although I have 
>> Qt4 installed as well.

>
>> There is no need for you to spend time on the Qt4 stuff for my benefit. 

>
> The "qtcint" make rule is a part of the ROOT distribution and documentation. It is broken in SVN "trunk" right now.
>
> It should be either fixed or removed from the distribution.
>
> My understanding, it will be fixed soon for the all ROOT users benefit ;-)
>
> Thank you for bringing this up.
>
>> I will try building qtcint in the directory it lives in. 
>> I'll let you know if this solves my problem.

>
> As I said, the "qtcint" makefile rule is broken for either Qt brand. It has to be fixed.
>
>> I assume there is no longer a need to download the qt layer 
>> separately from BNL since the code is included in the ROOT 
>> download, is that correct?

>
> As soon as Qt3 is concern, you are late ;-). Qt3 support by Root_at_CERN had been dropped. Only Qt4 is supported nowadays.
>
> I do maintain (at BNL ;-) the tar-ball that contains the Qt3 compliant version of Qt-layer. It can be installed against of the new ROOT version. However, I do NOT recommend you to do this.
>
> I do recommend waiting a couple of the days for the ROOT_at_Cern feedback.
>
> I think it is enough (it IS RECOMMENDED) for you to apply ACLiC to your macro to make it working right now. Please try it out anyway.
>
> Thank you for your patience.
>
> Best Regards
> Valeri Fine
> ---------------
> Brookhaven National Laboratory
> Upton, NY 11973, USA
> Phone: +1 631 344 7806
> Fax: +1 631 344 4206
> E-mail: fine_at_bnl.gov
>
> ----- Original Message -----
> From: Fine, Valeri <fine_at_bnl.gov>
> To: Lee, Kerry T. (JSC-SF)[LMIT]; roottalk_at_pcroot.cern.ch <roottalk_at_pcroot.cern.ch>
> Cc: qt-root-l_at_lists.bnl.gov <qt-root-l_at_lists.bnl.gov>
> Sent: Sun Sep 28 00:02:47 2008
> Subject: RE: [ROOT] qtcint.dll
>
> Dear Kerry,
>
>> This is probably a question for Valeri Fine.

>
> Thank you very much for your question and complain. One is keeping telling me that
> nobody needs Qt-layer and nobody uses it because nobody complains ;-)
>
>> I have been using some of the QT classes in one of my scripts by loading the qtcint.dll library. 

>
> The bottom line: we can not build qtcint.dll for Qt4 classes yet, . . . however you can help.
>
>> I have not updated my version of ROOT that is doing this particular task since 5.15.06. 
>> I am now trying to get this same script to run under the latest version 5.21. 
>> Since it has been so long since I have had to rebuild the qtcint library
>> I have forgotten what steps I did before.
>> I tried following the ROOT manual, but the manual is only current with ROOT 5.16
>> and following the instructions in chapter 27 does not work to produce the qtcint.dll.

>
> The documentation is still correct.;-)
>
> The "make" rule to build qtcint.dll belongs to root/graf2d/qt/Module.mk Makefile. It
> does contain the "qtcint" target.
> This means, formally to build CINT DLLs one needs to invoke:
>
> "make qtcint"
>
> However, the "rule" is obsolete and should fail :-(( , because it still tryies building the CINT
> dictionary for the Qt3 classes using the Qt3 header files. Qt3 support had
> been dropped and the current ROOT "configure" merely disregards the
> existence of the Qt3 installation if present.
>
> What you should do. I assume your macros use the Qt3 classes. This means
> there are in fact a few problems for you.
>
> First you should either change your classes to use Qt4 or install the
> previous version of the Qt-layer which is Qt3-compatible. The layer should
> work against of any ROOT version including the ROOT trunk.
>
> Can you send me an example of your macros to understand things better?
>
> Anyway, the current ROOT doesn't "know" yet how to build qtcint.dll
> against Qt4. The previous version was done by Philippe. I do now know
> whether the current CINT is powerful enough to parse the Qt4 header
> files. One has to try this yet.
>
> On the other hand you may not wait and just use the ACliC.
>
> For example, the Qt4-based macro below can be compiled and executed with
> ACliC against of Qt4 ( Compare it with the example from the User's Guide, p. 428 )
>
> #ifndef __CINT__
> # include <QFileDialog>
> # include <QStringList>
> # include <QString>
> # include "TObjString.h"
> # include "TList.h"
> # include <string>
> #endif
> TList *QtMultiFileDialog() {
> #ifdef __CINT__
> gSystem->Load("$ROOTSYS/cint/include/qtcint");
> #endif
> TList *listOfNames = new TList();
> QStringList files = QFileDialog::getOpenFileNames ();
> QStringList::Iterator it = files.begin();
> while ( it != files.end() ) {
> std::string flnm = (*it).toStdString();
> listOfNames->Add(new TObjString(flnm.c_str()));
> ++it;
> }
> printf ("\nThe TList of the file names contains:");
> printf ("\n-------------------------------------\n");
> listOfNames->ls();
> return listOfNames;
> }
>
> The BNL QtRoot CVS contains several simple macros like the one above.
> Use:
> "cvs -d :pserver:cvsuser_at_cvs.bnl.gov:/data01/CVS co -Pd qtRoot root"
> See http://root.bnl.gov/QtRoot/How2Install4Unix.html for details.
>
>> Can you please instruct me on how to build the qtcint.dll for the latest version of ROOT?

>
> - First you should decide whether you want to move to Qt4,
> - Second you should think whether you can use ACLiC rather "plain" CINT
>
> The source codes for qtcint.dll can be found under
> http://root.cern.ch/viewvc/trunk/cint/cint/lib/qt/qtclasses.h?revision=22729&view=markup
>
> As a temporary workaround you can use "cint/cint/lib/qt" as an example to create the
> your own subset of Cint dictionary for those Qt4 classes your macros
> need to use from CINT (with no ACLiC).
> Is there any obstacle that forces you to use very CINT rather ACliC?
>
> Mean time I'll see how quickly the qtcint.dll can be adjusted for Qt4.
>
> Thank you, Valeri
>
>
>
>
Received on Fri Oct 10 2008 - 16:36:39 CEST

This archive was generated by hypermail 2.2.0 : Fri Oct 10 2008 - 17:50:02 CEST