Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have something such as this in my cmake:

set(MyLib_SRC $ENV{MyLib_DIR}/MyLib.cpp)
add_library(MyLibrary STATIC ${MyLib_SRC})

but when I ran the cmake, I am getting this error:

CMake Warning (dev) at CMakeLists.txt:97 (add_library):
Syntax error in cmake code when parsing string

D:NewDevelopmentLib/myLib.cpp

Invalid escape sequence N

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.
This warning is for project developers.  Use -Wno-dev to suppress it.

I read this OS answer cmake parse error :Invalid escape sequence o but How can I chang the macro (which macro!) to a function?

The value of env variable is

MyLib_DIR=D:NewDevelopmentLib
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
457 views
Welcome To Ask or Share your Answers For Others

1 Answer

The problem is that $ENV{MyLib_DIR} expands the environment variable verbatim, including the backslashes used as path separators. These can then get re-interpreted as escape sequences.

What you want to do is convert the path to CMake's internal format before handling it in CMake code:

file(TO_CMAKE_PATH $ENV{MyLib_DIR} MyLib_DIR)

set(MyLib_SRC ${MyLib_DIR}/MyLib.cpp)
add_library(MyLibrary STATIC ${MyLib_SRC})

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...