To avoid this entirely, you can just use add_dependencies ( http://www.cmake.org/cmake/help/v3.2/command/add_dependencies.html ) instead of adding it as a DEPENDS to your ExternalProject_Add call.
The reason ExternalProject_Add queries to see if the other thing is an ExternalProject or not is to set up file level dependencies between a step of that project and the configure step of this project. If it is, it sets it up... if not, it has the same effect as a direct add_dependencies call. (But I have no idea why there are even whitelisted properties to tell you the truth..... I've been reading along here waiting for somebody to explain that one. ;-) HTH, David On Tue, Apr 21, 2015 at 3:34 AM, Andrey Pokrovskiy <wonder.m...@gmail.com> wrote: > [Moved from cmake users mailing list] > > I have the following construction: > > ExternalProject_Add( > websockets_ep > DEPENDS ev openssl > ...) > > But it so happened, that "openssl" is an INTERFACE library. It is an > INTERFACE library, because I created it with add_library(openssl > INTEFACE) and then populated corresponding INCLUDE and LINK > properties. And I get an obscure error: > > CMake Error at > /usr/share/cmake/share/cmake-3.2/Modules/ExternalProject.cmake:2031 > (get_property): > INTERFACE_LIBRARY targets may only have whitelisted properties. The > property "_EP_IS_EXTERNAL_PROJECT" is not allowed. > Call Stack (most recent call first): > /usr/share/cmake/share/cmake-3.2/Modules/ExternalProject.cmake:2328 > (_ep_add_configure_command) > src/libwebsockets/CMakeLists.txt:21 (ExternalProject_Add) > > Apparently because there is a check inside get_property() that > whitelists what properties could be queried. > > My first idea was that having a whitelist for get_property() is > probably not that good idea. > But then I realized that I don't understand why ExternalProject cares > about whether dependency is also an external project. What the > difference it makes? Does that means that it's not safe to use > external project target with add_dependencies()? > > ExternalProject_Add() already have code that should cover all cases: > > # Depend on other external projects (target-level). > get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS) > foreach(arg IN LISTS deps) > add_dependencies(${name} ${arg}) > endforeach() > > Why there is a special case when dependency is also an external project? > -- > > Powered by www.kitware.com > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Kitware offers various services to support the CMake community. For more > information on each offering, please visit: > > CMake Support: http://cmake.org/cmake/help/support.html > CMake Consulting: http://cmake.org/cmake/help/consulting.html > CMake Training Courses: http://cmake.org/cmake/help/training.html > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/cmake-developers -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake-developers