cmake解析错误:无效的转义序列\o。

时间:2023-02-02 22:52:54

I have a lot of similar error alert info like this type:

我有很多类似的错误提示信息,像这样:

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
    Syntax error in cmake code at

      C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

    when parsing string

      Header Files\\ogr\ogrsf_frmts

    Invalid escape sequence \o

the file "C:/yumen/wxgisgdal-read-only/cmake/common.cmake" is like is:

文件“C:/玉门/ wxgisgdal-read-only / cmake常见。cmake”喜欢的是:

#add data
 macro(add_files_macro FPATH FGROUP)
     file(GLOB GDAL_AHHEADERS ${FPATH}/*.h  ${FPATH}/*.hpp)
     set(GDAL_HHEADERS ${GDAL_HHEADERS} ${GDAL_AHHEADERS})
     source_group("Header Files\\${FGROUP}" FILES ${GDAL_AHHEADERS})
     file(GLOB GDAL_ACSOURCES ${FPATH}/*.cpp ${FPATH}/*.cc ${FPATH}/*.c)
     set(GDAL_CSOURCES ${GDAL_CSOURCES} ${GDAL_ACSOURCES})
     source_group("Source Files\\${FGROUP}" FILES ${GDAL_ACSOURCES})
 endmacro()

below is cmake error info

下面是cmake错误信息。

gdal version=[1.9.0]
 GDAL lib name ... wxgisgdal19
 c++ compiler ... cl
 CMake Error at CMakeLists.txt:92 (option):
   option called with incorrect number of arguments: BUILD_RELEASE_DEBUG_DIRS
   Set OFF to build each co# uninstall target

   configure_file(

        C:/yumen/wxgisgdal-read-only/cmake_uninstall.cmake.in 
        C:/yumen/wxgisgdal-read-only/build/cmake_uninstall.cmake 
       IMMEDIATE @ONLY)nfiguration to a separate directory ON 


 Found GEOS: C:/geos-3.2.3/lib/geosd.lib
 Found Proj: C:/PROJ/lib/proj.lib
 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:121 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:121 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\generic

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:122 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\generic

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:122 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\mem

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:125 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\mem

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:125 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\vrt

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:130 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\vrt

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:130 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\csv

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:135 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\csv

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:135 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\dxf

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:140 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\dxf

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:140 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\shp

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:145 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\shp

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:145 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 Found PostgreSQL: C:/pgsql/lib
 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\pg

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:158 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\pg

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:158 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\gml

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:163 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\gml

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:163 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\mitab

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:168 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\mitab

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:168 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 Found LIBKML: C:\Users\Public\libkml-read-only\msvc\Debug
 Found LIBKML Headers: C:/Users/Public/libkml-read-only/src
 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\libkml

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:184 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\libkml

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:184 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\kml

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:187 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\kml

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:187 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\geojson

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:193 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\geojson

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:193 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:5 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:5

   when parsing string

     Header Files\\ogr\ogrsf_frmts\geojson\jsonc

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:195 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 CMake Warning (dev) at cmake/common.cmake:8 (source_group):
   Syntax error in cmake code at

     C:/yumen/wxgisgdal-read-only/cmake/common.cmake:8

   when parsing string

     Source Files\\ogr\ogrsf_frmts\geojson\jsonc

   Invalid escape sequence \o

   Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
   "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
   command to set the policy and suppress this warning.
 Call Stack (most recent call first):
   cmake/ogr.cmake:195 (add_files_macro)
   CMakeLists.txt:135 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

 Found JPEG: C:/GnuWin32/lib/jpeg.lib 
 Configuring incomplete, errors occurred!

a guy told me that I should add something like this:

一个人告诉我应该加上这样的东西:

In Header Files\ogr\ogrsf_frmts need to add terminator '\' like this "Header Files\ogr\ogrsf_frmts"

在头文件中,ogr\ogrsf_frmts需要添加终止符'\',比如这个"头文件\ogr\ogrsf_frmts"

but as I paste the common.cmake file content line 5:

但是当我粘贴普通的。cmake文件内容第5行:

source_group("Header Files\${FGROUP}" FILES ${GDAL_AHHEADERS})

source_group(头文件\ $ { FGROUP }”文件$ { GDAL_AHHEADERS })

string after Header Files is replaced by FGROUP macro, may generated automatically by cmake, i can not edit them.

在头文件被FGROUP宏替换后,可以由cmake自动生成,我不能编辑它们。

1 个解决方案

#1


5  

The error is happening because the contents of the variable ${FGROUP} contain paths with Windows-style separators. These are treated by CMake as escape characters.

错误发生是因为变量${FGROUP}的内容包含有windows风格分隔符的路径。这些都是由CMake作为转义字符处理的。

You should change your macro to a function to avoid this. From the docs for macro:

您应该将宏更改为一个函数,以避免出现这种情况。来自宏的文档:

Note that the parameters to a macro and values such as ARGN are not variables in the usual CMake sense. They are string replacements much like the c preprocessor would do with a macro. If you want true CMake variables you should look at the function command.

注意,宏和值(如ARGN)的参数不是通常的CMake意义上的变量。它们是字符串替换,就像c预处理器和宏一样。如果您想要真正的CMake变量,您应该查看函数命令。

#1


5  

The error is happening because the contents of the variable ${FGROUP} contain paths with Windows-style separators. These are treated by CMake as escape characters.

错误发生是因为变量${FGROUP}的内容包含有windows风格分隔符的路径。这些都是由CMake作为转义字符处理的。

You should change your macro to a function to avoid this. From the docs for macro:

您应该将宏更改为一个函数,以避免出现这种情况。来自宏的文档:

Note that the parameters to a macro and values such as ARGN are not variables in the usual CMake sense. They are string replacements much like the c preprocessor would do with a macro. If you want true CMake variables you should look at the function command.

注意,宏和值(如ARGN)的参数不是通常的CMake意义上的变量。它们是字符串替换,就像c预处理器和宏一样。如果您想要真正的CMake变量,您应该查看函数命令。