[CMake] Unknown argument in FOREACH
Cedric Doucet
cedric.doucet at inria.fr
Mon May 18 12:25:46 EDT 2015
Hi Petr,
thank you very much!
I checked the documentation and for examples on the internet.
However, I did not noticed the details.
I may be blind because I am familiar with range-based loops like in C++ or Python.
I will try to look the documentation more carefully the next time.
Of course, after some tests, your solution works fine! :)
Cédric
----- Mail original -----
> De: "Petr Kmoch" <petr.kmoch at gmail.com>
> À: "Cedric Doucet" <cedric.doucet at inria.fr>
> Cc: cmake at cmake.org
> Envoyé: Lundi 18 Mai 2015 18:16:16
> Objet: Re: [CMake] Unknown argument in FOREACH
> Hi Cedric.
> If you check the documentation of foreach() (
> http://www.cmake.org/cmake/help/v3.2/command/foreach.html ), you will see
> there is no "IN item item..." syntax. Either LISTS or ITEMS has to follow
> after IN, or IN must be omitted altogether. So either do this:
> foreach(LIBRARY IN LISTS LIBRARIES_TO_DOWNLOAD)
> or this:
> foreach(LIBRARY ${LIBRARIES_TO_DOWNLOAD})
> I always prefer the former, because the latter will fail if the first item in
> the list happens to be "IN".
> Petr
> On Mon, May 18, 2015 at 6:05 PM, Cedric Doucet < cedric.doucet at inria.fr >
> wrote:
> > Hello,
>
> > I try to write a loop to donwload and install libraries whose name is
> > contained in a list.
>
> > I wrote these lines from the 45th line of my CMakeLists.txt file:
>
> > ===========================================================
>
> > set(LIBRARIES_TO_DOWNLOAD EIGEN)
>
> > foreach(LIBRARY IN ${LIBRARIES_TO_DOWNLOAD})
>
> > string(TOLOWER ${LIBRARY} LIBRARY_NAME)
>
> > ExternalProject_Add(${LIBRARY_NAME}
>
> > PREFIX ${LIBRARY_PREFIX}
>
> > DOWNLOAD_DIR ${${LIBRARY}_DOWNLOAD_DIR}
>
> > SOURCE_DIR ${${LIBRARY}_SOURCE_DIR}
>
> > BINARY_DIR ${${LIBRARY}_BINARY_DIR}
>
> > STAMP_DIR ${${LIBRARY}_STAMP_DIR}
>
> > INSTALL_DIR ${${LIBRARY}_INSTALL_DIR}
>
> > URL ${${LIBRARY}_URL}
>
> > URL_MD5 ${${LIBRARY}_URL_MD5}
>
> > CMAKE_ARGS ${${LIBRARY}_ARGS}
>
> > LOG_DOWNLOAD 1
>
> > LOG_UPDATE 1
>
> > LOG_CONFIGURE 1
>
> > LOG_BUILD 1
>
> > LOG_TEST 1
>
> > LOG_INSTALL 1
>
> > )
>
> > endforeach(LIBRARY)
>
> > ===========================================================
>
> > However, I get the following error message:
>
> > =========================================================================================
>
> > CMake Error at CMakeLists.txt:45 (foreach):
>
> > Unknown argument:
>
> > EIGEN
>
> > CMake Error at CMakeLists.txt:46 (string):
>
> > string no output variable specified
>
> > CMake Error at
> > /usr/local/bibliotheques/cmake/3.2.2/share/cmake-3.2/Modules/ExternalProject.cmake:1850
> > (message):
>
> > error: no download info for 'PREFIX' -- please specify existing/non-empty
>
> > SOURCE_DIR or one of URL, CVS_REPOSITORY and CVS_MODULE, SVN_REPOSITORY,
>
> > GIT_REPOSITORY, HG_REPOSITORY or DOWNLOAD_COMMAND
>
> > Call Stack (most recent call first):
>
> > /usr/local/bibliotheques/cmake/3.2.2/share/cmake-3.2/Modules/ExternalProject.cmake:2321
> > (_ep_add_download_command)
>
> > CMakeLists.txt:47 (ExternalProject_Add)
>
> > CMake Error at CMakeLists.txt:64 (endforeach):
>
> > endforeach An ENDFOREACH command was found outside of a proper FOREACH
>
> > ENDFOREACH structure. Or its arguments did not match the opening FOREACH
>
> > command.
>
> > =========================================================================================
>
> > Do you know where the problem come from?
>
> > Cheers,
>
> > Cédric
>
> > --
>
> > 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150518/59edcbbf/attachment-0001.html>
More information about the CMake
mailing list