[CMake] ADD_CUSTOM_COMMAND doesn't work as expected

Brad King brad.king at kitware.com
Thu Jul 20 09:30:05 EDT 2006


Christian Ehrlicher wrote:
>>> Hi,
>>>
>>> I'm creating some files with ADD_CUSTOM_COMMAND. Those files are not
>>> compileable but later needed for install.
>>> They're created fine when I use msvc generator but they aren't created
>>> with mingw or on linux.
>>>
>>> ADD_CUSTOM_COMMAND(
>>>   OUTPUT ${_out}
>>>   COMMAND prog ${_in} ${_out}
>>>   DEPENDS ${_in}
>>> )
>>> ...
>>> ADD_EXECUTABLE(main WIN32 ${_out})
>>>
>>> Why does it work with msvc and how can I fix this if the above is not
>>> allowed (and it works accidently for msvc)
>>
>> What kind of files are these ?
>> Ideally you should add them to the list of sources for the target. If they
>> don't have a source-file suffix, they won't be compiled. Or you could use
>> add_custom_command( main POSTBUILD COMMAND ...) so they will be built after
>> your executable has been built.
>>
> They're non source files and also the suffix isn't a source-file suffix.
> I've now used your suggestion and it doesn't work like as I need.
> - when I delete one of the generated files, they're not rebuild on next make run (and make install fails I think), PRE_BUILD doesn't work either
> - when one of the sources changed, it isn't rebuild
> - when executable is rebuild, all generated files are rebuild (but there is no need to rebuild them)
> 
> And why does my first solution works with msvc ide? Couldn't this simply extended to work on all generators?

The first solution is correct.  This was a bug in the Makefile
generator.  It was fixed in CVS a few weeks ago and will be in 2.4.3.

-Brad


More information about the CMake mailing list