On 16 June 2011 15:45, Michael Hertling <[email protected]> wrote:
> IMO, the default should not need to be explicitly enabled but the
> exception, and readability - though important - is subordinate to
> functionality, but probably, this is a matter of personal taste.
>
> However, if you stick with the GEN_OUTFILES definition, be aware of
> the single-config generator with an empty build type. In that case,
> only the COMPILE_DEFINITIONS property is in effect, so you must add
> the GEN_OUTFILES definition to it, but with a non-empty build type,
> this config-less property is in effect, too, so you must *not* add
> GEN_OUTFILE to it. Thus, you need to differentiate these cases:
>
> IF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
> FOREACH(... IN LISTS ... ITEMS ...)
> # Set COMPILE_DEFINITIONS_<CONFIG>.
> ENDFOREACH()
> ELSE()
> # Set COMPILE_DEFINITIONS.
> ENDIF()
>
> Clearly, this cuts down the elegance of the FOREACH loop, while the
> inverted approach with NO_GEN_OUTFILES would be unalteredly smooth.
>
Luckily I already have this in my CMakeLists.txt:
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
to force the default build to use the Release configuration. Otherwise I
would have fallen foul of the case you are suggesting.
Is COMPILE_DEFINITIONS only used in single-config generators if
CMAKE_BUILD_TYPE is not set ? That might explain why my initial attempts to
do this failed. I had added GEN_OUTFILES to COMPILE_DEFINITIONS thinking
this would apply to all configs. And then when I tried to remove that
option from COMPILE_DEFINITIONS_RELEASENOOUTFILES it failed to have the
desired effect.
Would that approach have worked for the multi-config generators ? Do they
use the concatenation of COMPILE_DEFINITIONS and COMPILE_DEFINITIONS_<active
config> ?
--
Glenn
_______________________________________________
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