On Win64, in a 32-bit calling environment, there are two environment
variables with values like this:
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=AMD64

In a pure 64-bit calling environment, there is just:
PROCESSOR_ARCHITECTURE=AMD64
(and no value for PROCESSOR_ARCHITEW6432)

...so: you could do something like this (although it may not be 100%
foolproof...):
if("$ENV{PROCESSOR_ARCHITEW6432}" STREQUAL "")
  if("$ENV{PROCESSOR_ARCHITECTURE}" STREQUAL "x86")
    # "pure" 32-bit environment...
  else()
    # "pure" 64-bit environment...
  endif()
else()
  if("$ENV{PROCESSOR_ARCHITECTURE}" STREQUAL "x86")
    # 32-bit program running with an underlying 64-bit environment
available...
  else()
    # theoretically impossible case...
  endif()
endif()

Of course, it would be better to not have conditionals based on the
environment... Why do you need to do this?


HTH,
David


On Mon, Oct 26, 2009 at 6:46 PM, James Bigler <jamesbig...@gmail.com> wrote:

> All the WIN32 flags say they are valid for WIN64 machines.  Is there no
> equivalent WIN64 flag to determine if the OS is 32 or 64 bit regardless of
> the bitness of the build?
>
> Thanks,
> James
>
> _______________________________________________
> 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
>
_______________________________________________
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