Hi Pritpal,

Can you guide me what must I do to create
> environment for harbour/contrib/hbqt/*.*
> ( on my local machine, until it is placed officially ).
>
> I want to set up my env properly just not to change
> build requirements in future.


We will need a HB_INC_QT and HB_DIR_QT envvars
for include, otherwise the hbqt dir should look the exact
same as any other 3rd party dependent dirs. Only the
list of files, platform/compiler guards and autodetection
dirs will need to be adapted.

set HB_INC_QT=C:\devl\Qt\2009.01\qt\include
set HB_DIR_QT=C:\devl\Qt\2009.01\qt

For the case of hbqt (see next section for a proposed
component layout), Makefile would look like this:

--- contrib/hbqt/Makefile
#
# $Id$
#

ROOT = ../../

LIBNAME=hbqt

ifneq ($(HB_ARCHITECTURE),dos)
ifneq ($(HB_ARCHITECTURE),os2)

ifeq ($(HB_INC_QT),)
ifeq ($(HB_XBUILD),)
HB_INC_QT = /usr/include /opt/local/include
endif
endif

HB_INC_QT_OK += $(foreach d, $(HB_INC_QT), $(if $(wildcard
$(d)/Qt/qatomic.h),$(d),))

ifneq ($(strip $(HB_INC_QT_OK)),)

HB_USER_CFLAGS += $(foreach d, $(HB_INC_QT_OK), -I$(d))

CPP_SOURCES=\
hbqt_****.cpp \

PRG_HEADERS=\
hbqt.ch \
hbqtextern.ch \

PRG_SOURCES=\
....prg \

include $(TOP)$(ROOT)config/header.cf
INSTALL_RULE_HEADERS := $(INSTALL_RULE)
include $(TOP)$(ROOT)config/lib.cf

install::
$(INSTALL_RULE_HEADERS)

else
include $(TOP)$(ROOT)config/none.cf
endif
else
include $(TOP)$(ROOT)config/none.cf
endif
else
include $(TOP)$(ROOT)config/none.cf
endif
---

I think QT is just a fantastic tool to base GTQT at first
> place and Xbase++ Parts next.


Yes, it indeed looks very fine and has every property to
become a good base for a portable Harbour GUI.

Maybe it's not too late to ask such thing, and since QT
can easily become such crucial core component of Harbour,
I'd very strongly recommend for you and everyone involved
to try to create a well laid out, modular base, where we
use the Harbour API the best available way. This ensures
that QT won't become bloated and unmaintainable quickly.
For this to happen any QT related parts should only rely
on QT headers and Harbour API, most importantly *no*
Windows API in *any* form.

The other important part is modularity. Few things we can
create using QT:
- QT wrappers, in .cpp. Separate lib: "hbqt"
- Pure QT CUI GT: "GTQTC". This needs to be done separately and
  compatible with GTWVT, GTXWC.
- Xbase++ class on top of hbqt lib. Preferable a separate lib,
  or at least separate .prg-only files.
- Mixed CUI-GUI GT. I'm not sure if that was what you had
  in mind, but in this case, this should be a separate GT,
  by the name "GTQTG".

Since DOS isn't supported anyway in QT, I'd like to propose
to lift 8.3 rule in QT related contribs dirs. If there are no
objections, let's go that way.

In the future we can group these related contribs under one
main directory, or shuffle them as looks best, but let's keep
it clean and modular please.

Brgds,
Viktor
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to