QConf v1.4
----------
Author: Justin Karneges <justin@affinix.com>
Date: August 27th 2007

Description:

  QConf allows you to have a nice configure script for your qmake-based
  project.  It is intended for developers who don't need (or want) to use
  the more complex GNU autotools.

  Scripts generated by QConf are meant for unix.  This means it should only
  be used with projects based on Qt/X11, Qt/Mac, or Qt/Embedded.  No effort
  has been made in supporting Qt/Windows based projects (yet).

  NOTE: QConf is a Qt 4 program as of version 1.2.  However, it can still
    generate configure scripts for Qt 3 apps.  See below for information.


Using QConf is easy:

  1) First, install qconf:

     $ ./configure
     $ make
     # make install

  2) Now, create a project.qc file.  It is in an XML format:
     <qconf>
       <name>MyProject</name>         <-- a friendly string
       <profile>project.pro</profile> <-- your qmake profile
     </qconf>

  3) Then run qconf on your file:

     $ qconf project.qc

     Assuming all goes well, this will output a 'configure' script.  Simply
     copy this into your application package.  Make sure to include(conf.pri)
     in your project.pro file.

  Tip: If qconf is launched with no arguments, it will use the first .qc
    file it can find in the current directory.  If there is no .qc file,
    then it will look for a .pro file, and create a .qc for you based on it.


Running 'configure':

  Once the configure script has been created, it is immediately usable.  The
  script simply performs the following tasks:

    1) Check for a proper Qt build environment.  This is done by compiling
       the 'conf' program, which ensures that the Qt library, qmake, and
       necessary compiler tools are present and functioning.

    2) 'conf' is launched, which does any needed dependency checking and
       creates a suitable conf.pri.  This operation also ensures that
       not only can we successfully build Qt-based programs, but launch
       them as well.

    3) qmake is invoked on the project's .pro file.

  Assuming configuration was a success, the Makefile should be generated and
  the user can now type 'make'.

  The script does not touch any of your project files.  It is up to you to
  actually include conf.pri in your .pro file.

  Tip: Passing the '--verbose' option to configure can aid in diagnosing
    configuration problems.


Q & A
-----
Q: How do I specify dependencies?
A: List them in your .qc file using the <dep> element.  Follow sampledeps.qc
   for a hint.

Q: My dependency is not supported!
A: You will need to make it.  Look in the 'modules' folder to see how it is
   done.  If you find that you need to make a lot of these, perhaps you
   should consider GNU autotools. ;-)

Q: How does qconf find modules?
A: Modules are found in the 'modules' subdirectory within the configured
   libdir (default is /usr/local/share/qconf).  Additional directories
   can be specified using the <moddir> element.  For instance:
     <moddir>qcm</moddir>
   would cause qconf to look for modules in the relative directory 'qcm'.
   This is useful if you want to bundle modules within your application
   distribution.

Q: How do I perform custom processing or add project-specific arguments?
A: The recommended way of doing this is to create an extra.qcm file that
   does the processing you need, and then just add it to your .qc file like
   any normal dependency.  Implement checkString() in your module to return
   an empty QString if you want to suppress output.

Q: How can I install more than just the binary with 'make install'?
A: You need to specify the extra files using the qmake INSTALLS variable
   (see qmake docs for details).

Q: What environment variables are available?
A: Main variables: PREFIX, BINDIR, LIBDIR, QTDIR.
   All other variables are written as QC_FOO, where FOO is the option name
   in all caps.  Boolean variables are set to 'Y' when flagged.

Q: How do I generate scripts for Qt 3 projects?
A: Include the <qt3/> element in the project's .qc file.  Modules will not
   be able to take advantage of most new qconf features, and everything
   should work as they did with qconf 1.1.

