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.

(cherry picked from commit 7b44280da4)
This commit is contained in:
Kornel Benko 2019-12-15 13:38:23 +01:00
parent 440271540f
commit a99dc05e18

View File

@ -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")