[LyX/master] Cmake tests: Make foreach() command robust

Kornel Benko kornel at lyx.org
Sun Dec 15 12:50:54 UTC 2019

commit 7b44280da4fc015a4a930c311cc6073cebacf738
Author: Kornel Benko <kornel at lyx.org>
Date:   Sun Dec 15 13:38:23 2019 +0100

    Cmake tests: Make foreach() command robust
    Cmake's foreach command includes forms
      foreach(<loop_var> IN LISTS <lists>)
      foreach(<loop_var> IN ITEMS <items>)
      foreach(<loop_var> RANGE ...)
    We get the lines to be parsed by
      file(STRINGS "${filepath}" lines)
    If in the parsed lyx-file there is a line
    containing only the single word 'IN',  or 'RANGE', then
    the command
      foreach(_l ${lines})
    can create a syntax error (at least with cmake1.16)
    In fact, in file pl_Additional.lyx:12913 happens to have
    such a beast.
 development/autotests/ExportTests.cmake |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/development/autotests/ExportTests.cmake b/development/autotests/ExportTests.cmake
index 85d0ecc..febac16 100644
--- a/development/autotests/ExportTests.cmake
+++ b/development/autotests/ExportTests.cmake
@@ -53,7 +53,7 @@ macro(getoutputformats filepath varname format_set)
   # What should we test, if default_output_format is not defined?
   # For now we test everything ...
   set(out_formats "xhtml" ${DVI_FORMATS} ${PDF_FORMATS})
-  foreach(_l ${lines})
+  foreach(_l IN LISTS lines)
     if(_l MATCHES "^\\\\default_output_format +\([^ ]+\)")
       set(_format ${CMAKE_MATCH_1})
       if(_format STREQUAL "default")

More information about the lyx-cvs mailing list