OK, I see the
problem. Now to figure out why it
happens... :-)
In the tqtinterface qtinterface/CMakeLists.txt file,
there is an if
statement that looks like this:
if ( NOT HAVE_REAL_TQT )
For anything to work properly on native tqt3,
HAVE_REAL_TQT *must* be set.
Yet in the CMakeCache.txt file you sent earlier,
HAVE_REAL_TQT does not
show up anywhere.
If HAVE_REAL_TQT was set, the string "Native TQt3
detected" needs to
show
up in the tqtinterface build log. Once again I
don't see it anywhere in
the build log you sent earlier.
There is a chunk of logic in the tqtinterface
ConfigureChecks.cmake file
that looks like this:
if( NOT DEFINED QT_INCLUDE_DIR )
if( QT_PREFIX_DIR STREQUAL "/usr" )
if( EXISTS
"${QT_PREFIX_DIR}/include/tqt${QT_VERSION}" )
set( QT_INCLUDE_DIR
"${QT_PREFIX_DIR}/include/tqt${QT_VERSION}" )
set( HAVE_REAL_TQT ON
CACHE BOOL
"Native TQt3 detected" )
Note the number of ways that the set(HAVE_REAL_TQT)
statement can be
bypassed. This logic is incomplete and needs to
be repaired.
Specifically, I will need to figure out a way for CMake
to load the
qglobal.h file and unambiguously determine the
nature
of the Qt version
> installed.
Yup, I see the problem now that you pointed me to the cmake logic. The cmake logic is like
this:
if( NOT DEFINED QT_INCLUDE_DIR )
if( QT_PREFIX_DIR STREQUAL "/usr" )
if( EXISTS "${QT_PREFIX_DIR}/include/tqt${QT_VERSION}" )
set( QT_INCLUDE_DIR "${QT_PREFIX_DIR}/include/tqt${QT_VERSION}" )
set( HAVE_REAL_TQT ON CACHE BOOL "Native TQt3 detected" )
else( )
set( QT_INCLUDE_DIR "${QT_PREFIX_DIR}/include/qt${QT_VERSION}" )
endif( )
else( )
set( QT_INCLUDE_DIR "${QT_PREFIX_DIR}/include" )
endif( )
endif( )
qt_message( " QT_INCLUDE_DIR: ${QT_INCLUDE_DIR}" )
I don't have a ${PREFIX}/include/(t)qt${QT_VERSION} because my build script installs
the header files to ${PREFIX}/include. I did not specify -headerdir in my (t)qt3 configure
options. The logic tests fail without that specific include directory name.
I notice a few things:
1) I can specify -headerdir to the expected location. If that is the only test, then we
need to update the wiki to ensure everybody always specifies -headerdir =
${PREFIX}/include/(t)qt${QT_VERSION}.
2) To detect when a user builds to install the header files to ${PREFIX}/include rather
than ${PREFIX}/include/(t)qt${QT_VERSION}, a different test is needed. Possibly detect
whether qt-mt.pc or tqt-mt.pc is installed in the $PKGCONFIG locations. The other day you
showed me how to use pkg-config --cflags-only-I, so perhaps that is the better test to
determine where the header files are installed and which version of (t)qt3.
3) In Slackware, and probably some other distros too, the traditional installation
location for qt3 was ${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}-${VERSION}. A challenge with
that location is the requirement to create several sym links to standard locations.
Therefore I changed a lot of that in my new GIT (t)qt3 build scripts to avoid needing to
create all of those sym links. Yet even with that install location, there will not be an
${PREFIX}/lib${LIBDIRSUFFIX}/$PRGNAM-$VERSION/include/(t)qt{$VERSION} directory, only
${PREFIX}/lib${LIBDIRSUFFIX}/$PRGNAM-$VERSION/include. So perhaps the pkg-config option is
best.
For now the solution might be as easy as building both qt3 and tqt3 with -headerdir
specified to ${PREFIX}/include/(t)qt${QT_VERSION}. I will try that tonight and post the
results. :)
Thanks for your help!
Darrell