[CMake] configuration based add_custom_command

Michael Hertling mhertling at online.de
Wed Aug 24 08:49:44 EDT 2011


On 08/24/2011 01:47 PM, Robert Bielik wrote:
> Robert Bielik skrev 2011-08-24 13:43:
>> Michael Hertling skrev 2011-08-24 13:13:
>>> Suppose
>>>
>>> ADD_CUSTOM_COMMAND(OUTPUT source.c CONFIGURATION Release COMMAND ...)
>>> ADD_EXECUTABLE(main ... source.c)
>>>
>>> and then:
>>>
>>> cmake -DCMAKE_BUILD_TYPE=Debug<path/to/source>
>>>
>>> How would you like this case to be handled by CMake? Note that with
>>> multi-config generators, the build type aka configuration is chosen
>>> at build time, and the user is free to define custom build types.
>>
>> I'd expect the obvious, i.e. the ADD_CUSTOM_COMMAND shall not be included in the build if CMAKE_BUILD_TYPE==Debug. I see no conflict with
>> multi-config generators either.
> 
> Sorry, I didn't look to closely. Hmm.. yup, that would be a problem. Maybe CMake would fail when it detects dependencies that must be available
> in all configurations ? In this case it would say:
> 
> "Failure: Target 'main' has dependencies that are not available in all configurations"

What does this mean? Does the configuration fail or succeed? With a
multi-config generator, the user might choose to build the Release
config, so the CMake pass would be expected to succeed. Is is
expected to fail in case of a single-config generator and
CMAKE_BUILD_TYPE!=Release?

Anyway, I didn't want to discuss this particular detail; my
point is: Configuration-selective custom commands possibly have
far-reaching consequences which should be carefully reasoned out.

Regards,

Michael


More information about the CMake mailing list