Gibt es eine eingebaute in Funktion zu konvertieren wörtliche einen String in einen C-String zu konvertieren. Zum Beispiel:CMake Funktion String C Stringliteral
set(foo [[Hello\ World"!\]])
convert_to_cstring_literal(bar "${foo}")
message("${foo}") # Should print (including quotes): "Hello\\ World\"!\\"
Ich meine ich dies mit regulären Ausdrücken mit erheblichen Aufwand zu tun, aber wenn es eine eingebaute Funktion ist wäre es viel schöner.
Sie können * * fast verwenden das ' ESCAPE_QUOTES '-Option auf' string (CONFIGURE', aber es [entgeht Backslashes nicht] (https://github.com/Kitware/CMake/blob/3c0de6db2d9e0580f23cc95c4a1e00a8f66108c9/Source/cmSystemTools.cxx#L208). – Timmmm
Do w Sprechen wir über Pre-Prozessor-Definitionen? Sie werden automatisch maskiert (siehe [Richtlinie CMP0005] (https://cmake.org/cmake/help/latest/policy/CMP0005.html)). Andernfalls würde etwas aus ['CPack.cmake'] (https://gitlab.kitware.com/cmake/cmake/blob/master/Modules/CPack.cmake#L351) genügen:' string (REGEX REPLACE "([\ \\ $ \ "])" "\\\\\\ 1" entkommen "$ {value}") '? – Florian
es * ist * eine Präprozessordefinition, aber leider muss ich es zu einem Header schreiben und verwenden' configure_file() ', weil [Sie nicht zuverlässig sie auf der Kommandozeile übergeben können] (https://cmake.org/cmake/help/v3.8/prop_dir/COMPILE_DEFINITIONS.html#prop_dir:COMPILE_DEFINITIONS). auch meine Definition enthält mehr .??? C-Strings, es ist ein Array initialiser Liste wie folgt aus: '{ "foo", "bar"}' – Timmmm