[CMake] Fwd: Generated file dependency

Nikolay Mitev face.mitev at gmail.com
Fri Apr 24 04:16:19 EDT 2009


On Thu, Apr 23, 2009 at 6:50 PM, James Bigler <jamesbigler at gmail.com> wrote:

> On Thu, Apr 23, 2009 at 9:39 AM, James Bigler <jamesbigler at gmail.com>wrote:
>
>> On Thu, Apr 23, 2009 at 6:50 AM, Nikolay Mitev <face.mitev at gmail.com>wrote:
>>
>>> [posting to the list, since I accidentally replied only to Sergey]
>>> On Thu, Apr 23, 2009 at 1:48 PM, Sergey Rudchenko <
>>> sergey.rudchenko at gmail.com> wrote:
>>>
>>>> On Thu, 2009-04-23 at 13:37 +0300, Nikolay Mitev wrote:
>>>> > Hi
>>>> >
>>>> > I have the following situation:
>>>> >
>>>> > files: test.cpp test.h
>>>> >
>>>> > I want to process the file test.cpp with a custom pre-processor which
>>>> > will generate, say, test.ii.cpp which will get compiled into
>>>> > libtest.a. test.cpp just includes test.h.
>>>> >
>>>> > This is my CMakeLists.txt file:
>>>> >
>>>> > cmake_minimum_required(VERSION 2.6)
>>>> >
>>>> > add_custom_command (OUTPUT test.ii.cpp
>>>> >   COMMAND preprocess test.cpp test.ii.cpp
>>>> >   DEPENDS test.cpp
>>>> >   COMMENT "Creating test.ii.cpp"
>>>> >   VERBATIM)
>>>> >
>>>> > add_library (test test.ii.cpp)
>>>> >
>>>> > All dandy, but when I modify test.h the preprocessing step is not run,
>>>> > but just the compile step for test.ii.cpp. How can I make it so, that
>>>> > when the header is modified the preprocessing and the compilation
>>>> > steps are both run?
>>>>
>>>> Did you try to list the test.h in the DEPENDS list?
>>>>
>>>
>>> Yes, and this works, but I really don't want to keep this list up-to-date
>>> manually. The project involves hundreds of files, so I'm looking for a way
>>> to automate this. Is there a way to extract the dependencies of test.cpp and
>>> make test.ii.cpp depend on them?
>>>
>>>
>>> Nikolay
>>>
>>>
>> If you have a C or CXX language file look the documentation for
>> add_custom_command and IMPLICIT_DEPENDS.
>>
>> James
>>
>
> I just realized that IMPLICIT_DEPENDS only works for the Makefile
> generator.  If you need a more general solution, it requires a much bigger
> hammer.  I have a cmake script that generates the dependency file (i.e. -M)
> and does a bunch of CMake magic to maintain that dependency file and
> encorporate those dependencies into the build system.
>
> James
>

IMPLICIT_DEPENDS works for me, for now, since I'm targeting unix platforms.
But a more generic solution would be really nice to have.

Nikolay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090424/35318284/attachment.htm>


More information about the CMake mailing list