> On Mon, Mar 28, 2011 at 10:48 AM, Rolf Eike Beer <e...@sf-mail.de> wrote:
>
>> > I came up with this simple diff which makes everything work smoothly
>> for
>> > me:
>>
>> This also works for me and should properly detect if the dependency is
>> itself an external target or not:
>>
>> diff --git a/Modules/ExternalProject.cmake
>> b/Modules/ExternalProject.cmake
>> index 3de6b7e..90b23ce 100644
>> --- a/Modules/ExternalProject.cmake
>> +++ b/Modules/ExternalProject.cmake
>> @@ -1261,8 +1261,14 @@ function(_ep_add_configure_command name)
>>    set(file_deps)
>>   get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
>>   foreach(dep IN LISTS deps)
>> +    # Find out if this dependency is itself an external target or not.
>> +    # If it doesn't have _EP_STAMP_DIR we assume it's a normal target.
>>      get_property(dep_stamp_dir TARGET ${dep} PROPERTY _EP_STAMP_DIR)
>> -    list(APPEND file_deps ${dep_stamp_dir}${cfgdir}/${dep}-done)
>> +    if(dep_stamp_dir)
>> +      list(APPEND file_deps ${dep_stamp_dir}${cfgdir}/${dep}-done)
>> +    else(dep_stamp_dir)
>> +      list(APPEND file_deps ${dep})
>> +    endif(dep_stamp_dir)
>>    endforeach()
>>
>>   get_property(cmd_set TARGET ${name} PROPERTY _EP_CONFIGURE_COMMAND
>> SET)

> I am not sure I like this patch, or not. I'm on the fence.
>
> I would recommend just using:
>
>   ExternalProject_Add(xyz ...)
>   add_dependencies(xyz mylib)
>
> to add non-ExternalProject dependencies. Just to make it clear that the
> dependencies are target-level dependencies and not file dependencies.

This only "sort-of" works. If I delete the library from the build try
(only the .so) and rebuild the external project does not get relinked.
Also the documentation of ExternalProject_Add says:

  [DEPENDS projects...]       # Targets on which the project depends

No word that these need to be file-level dependencies. In fact since
ExternalProject.cmake unconditionally uses the _EP_STAMP_DIR property of
the target this will only work with ExternalProject targets at all (not
even file level dependencies) which looks just wrong to me.

Eike
_______________________________________________
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

Reply via email to