> 
> Sure, the find_program() call in FindQt4.cmake has registry keys first, but 
> if 
> you look at the docs for find_program(), all of those paths are looked at 
> last.
> 
> The CMAKE_PREFIX_PATH and PATH variables have a higher priority, and you can 
> set those to control which Qt you want found.
> 

Hello,

thanks for the reply! It seems that it is the info I was looking for.

But till now i still did not succeed. Beforehand I have to mention that
i strongly oppose to standard path additons or environment variables to
make builds run, because i believe builds should run out of the box.

In that case, however, i think an exception is appropriate. Or to be
more specific, the build should set the environment or the variables by
itself, and leave the system as it is. This should work, because after
config phase, CMAKE has all its path in the cache, right?

So, this is what i came up with today:

snip --------------------------->

if( ${HAVE_64_BIT} )

  if( EXISTS $ENV{QTDIR64} )
    MESSAGE( STATUS "* detected QTDIR64 variable with: $ENV{QTDIR64}" )
                
    #redirect
    SET( ENV{QTDIR} $ENV{QTDIR64} )
    SET( ENV{PATH} "$ENV{PATH};$ENV{QTDIR64}/bin" )
    MESSAGE( STATUS "* redirected QTDIR variable to: $ENV{QTDIR}" )
    MESSAGE( STATUS " " )
    MESSAGE( STATUS "* PATH: $ENV{PATH}" )
    MESSAGE( STATUS " " )
                
    #set prefix path
    SET(CMAKE_PREFIX_PATH "$ENV{QTDIR64} ${CMAKE_PREFIX_PATH}" )
    MESSAGE( STATUS "* CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}" )
    #NO_CMAKE_PACKAGE_REGISTRY NO_SYSTEM_ENVIRONMENT_PATH  PATHS
$ENV{QTDIR64}}
                
    FIND_PACKAGE(Qt4 REQUIRED  HINT $ENV{QTDIR64}/bin )
  else( EXISTS $ENV{QTDIR64} )
    MESSAGE ( FATAL_ERROR " !! ARCHITECTURE detected as 64 bit, but no
QTDIR64 found in environment. Aborting !!")
    endif( EXISTS $ENV{QTDIR64} )
        
else( ${HAVE_64_BIT} )
  SET( ENV{PATH} "$ENV{PATH};$ENV{QTDIR}/bin" )
  MESSAGE( STATUS " " )
  MESSAGE( STATUS "* PATH: $ENV{PATH}" )
  MESSAGE( STATUS " " )
  FIND_PACKAGE(Qt4 REQUIRED)
endif ( ${HAVE_64_BIT} )

< --------------------------- snap

In the 64 bit console, cmake indeed goes to the QTDIR64 branch, and
QTDIR is set to QTDIR64, and as enforcing every chance i get ( :) ) for
the correct path, i set CMAKE_PREFIX_PATH to the QTDIR64 value. AND i
add it tio the path.. Specifically, I removed the 32bit QTDIR from the
stanard PATH.

*but*

..it does not work yet. So what is wrong? My output is still:


snip --------------------------->
-- * detected QTDIR64 variable with: C:\Libs\Qt\4.7.1_vc9_x64
-- * redirected QTDIR variable to: C:\Libs\Qt\4.7.1_vc9_x64
--
-- * PATH:
--
-- * CMAKE_PREFIX_PATH: C:\Libs\Qt\4.7.1_vc9_x64
-- QT_USE_FILE: C:/Program Files (x86)/CMake
2.8/share/cmake-2.8/Modules/UseQt4.cmake
--
-- QT_QTMAIN_LIBRARY_DEBUG:   C:/Libs/Qt/4.7.1_vc9/lib/qtmaind.lib
-- QT_QTMAIN_LIBRARY_RELEASE: C:/Libs/Qt/4.7.1_vc9/lib/qtmain.lib
-- QT_LIBRARY_RELEASE:
-- QT_LIBRARY_DEBUG:
--
-- current include:           C:/Libs/Qt/4.7.1_vc9/include
-- current lib:
-- definitions:               -DQT_DLL
-- CMAKE_CONFIGURATION_TYPES: DebugReleaseMinSizeRelRelWithDebInfo
-- CMAKE_BUILD_TYPE:
--  * done.
< --------------------------- snap

Note that i stripped the path output from my console output for sake of
readability, but there is no reference to qt, which i double checked.

So, what did i miss?

Regards,
Thomas

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to