[CMake] Change project name based on architecture

Eric Noulard eric.noulard at gmail.com
Fri Nov 4 02:50:37 EDT 2016


2016-11-04 5:06 GMT+01:00 B. Scott Harper <orcein at gmail.com>:

> I have a project where I manage multiple architectures and switch back and
> forth frequently for testing. Full disclosure, I'm using Visual Studio. And
> since I cannot generate a single solution with multiple architectures (per
> everything I've found searching Google and the mailing list), I have two
> separate solution files (one each for x86 and x64). I often open a solution
> using the recent solutions menu, and it would be a lot easier if I could
> name the solution (cmake's "project()" command) differently for each
> architecture I use.
>
> I tried simply
>
> if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
>     set(PLATFORM_TARGET "x64")
> else()
>     set(PLATFORM_TARGET "x86")
> endif()
>
> project(My_Project_${PLATFORM_TARGER})
>
> ...however it seems that CMAKE_SIZEOF_VOID_P isn't filled out until AFTER
> the project command, so I can't use that variable as part of my
> project/solution name.
>

Yes this is a kind of chicken & eggs problem.
The size of VOID_P may not be known before the arch+compiler is known and
for that you need project (+ enable_langage) etc...

Since you already use different CMake generator for your different may be
you can check

CMAKE_GENERATOR
CMAKE_GENERATOR_PLATFORM
CMAKE_GENERATOR_TOOLSET

instead. I guess that those should be (I did not checked) defined before
project command.


> Is there another way to accomplish this? Google only returns documentation
> on the project command in general and the above method seems to be the
> preferred means of detecting build architecture.
>

This is a generator agnostic way to detect 32 vs 64 bits but

You may have a look at CMAKE_SYSTEM_xxxx variables as well, but those may
not be defined before enable language/project command as well.
However CMAKE_GENERATOR_xxx matches should be enough to name your project
properly I guess.
-- 
Eric
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20161104/a45484b5/attachment.html>


More information about the CMake mailing list