Skip to content

Instantly share code, notes, and snippets.

@pmolodo
Last active February 2, 2020 02:45
Show Gist options
  • Save pmolodo/ac6941b7337c607b10521a57cac85b70 to your computer and use it in GitHub Desktop.
Save pmolodo/ac6941b7337c607b10521a57cac85b70 to your computer and use it in GitHub Desktop.
cmake_quoting_test
#! /usr/bin/env cmake -P
cmake_minimum_required(VERSION 2.8)
# This results in this output:
# -- ========================
# -- empty_var: ""
# -- -------
# -- Unquoted parsing: print_args()
# -- ARGC: 0
# -- -------
# -- Quoted parsing: print_args("")
# -- ARGC: 1
# -- ARGV0:
# -- -------
# -- Unquoted expansion: print_args(${empty_var})
# -- ARGC: 0
# -- -------
# -- Quoted expansion: print_args("${empty_var}")
# -- ARGC: 1
# -- ARGV0:
# -- ========================
# -- var_with_spaces: "foo bar"
# -- -------
# -- Unquoted parsing: print_args(foo bar)
# -- ARGC: 2
# -- ARGV0: foo
# -- ARGV1: bar
# -- -------
# -- Quoted parsing: print_args("foo bar")
# -- ARGC: 1
# -- ARGV0: foo bar
# -- -------
# -- Unquoted expansion: print_args(${var_with_spaces})
# -- ARGC: 1
# -- ARGV0: foo bar
# -- -------
# -- Quoted expansion: print_args("${var_with_spaces}")
# -- ARGC: 1
# -- ARGV0: foo bar
# -- ========================
# -- listvar: "more;stuff"
# -- -------
# -- Unquoted parsing: print_args(more;stuff)
# -- ARGC: 2
# -- ARGV0: more
# -- ARGV1: stuff
# -- -------
# -- Quoted parsing: print_args("more;stuff")
# -- ARGC: 1
# -- ARGV0: more;stuff
# -- -------
# -- Unquoted expansion: print_args(${listvar})
# -- ARGC: 2
# -- ARGV0: more
# -- ARGV1: stuff
# -- -------
# -- Quoted expansion: print_args("${listvar}")
# -- ARGC: 1
# -- ARGV0: more;stuff
# -- ========================
# -- listvar2: "other;;trex;"
# -- -------
# -- Unquoted parsing: print_args(other;;trex;)
# -- ARGC: 2
# -- ARGV0: other
# -- ARGV1: trex
# -- -------
# -- Quoted parsing: print_args("other;;trex;")
# -- ARGC: 1
# -- ARGV0: other;;trex;
# -- -------
# -- Unquoted expansion: print_args(${listvar2})
# -- ARGC: 2
# -- ARGV0: other
# -- ARGV1: trex
# -- -------
# -- Quoted expansion: print_args("${listvar2}")
# -- ARGC: 1
# -- ARGV0: other;;trex;
# -- ========================
# -- escapedSemicolon: "all\;one arg;other arg"
# -- -------
# -- Unquoted parsing: print_args(all\;one arg;other arg)
# -- ARGC: 4
# -- ARGV0: all;one
# -- ARGV1: arg
# -- ARGV2: other
# -- ARGV3: arg
# -- -------
# -- Quoted parsing: print_args("all\;one arg;other arg")
# -- ARGC: 1
# -- ARGV0: all\;one arg;other arg
# -- -------
# -- Unquoted expansion: print_args(${escapedSemicolon})
# -- ARGC: 2
# -- ARGV0: all;one arg
# -- ARGV1: other arg
# -- -------
# -- Quoted expansion: print_args("${escapedSemicolon}")
# -- ARGC: 1
# -- ARGV0: all\;one arg;other arg
function(print_args)
message(STATUS "ARGC: ${ARGC}")
set(i 0)
while("${i}" LESS "${ARGC}")
message(STATUS "ARGV${i}: ${ARGV${i}}")
math(EXPR i ${i}+1)
endwhile()
endfunction()
message(STATUS "========================")
set(empty_var "")
message(STATUS "empty_var: \"${empty_var}\"")
message(STATUS "-------")
message(STATUS "Unquoted parsing: print_args()")
print_args()
# 0 args: []
message(STATUS "-------")
message(STATUS "Quoted parsing: print_args(\"\")")
print_args("")
# 1 arg: [""]
message(STATUS "-------")
message(STATUS "Unquoted expansion: print_args(\${empty_var})")
print_args(${empty_var})
# 0 args: []
message(STATUS "-------")
message(STATUS "Quoted expansion: print_args(\"\${empty_var}\")")
print_args("${empty_var}")
# 1 arg: [""]
message(STATUS "========================")
set(var_with_spaces "foo bar")
message(STATUS "var_with_spaces: \"${var_with_spaces}\"")
message(STATUS "-------")
message(STATUS "Unquoted parsing: print_args(foo bar)")
print_args(foo bar)
# 2 args: ["foo", "bar"]
message(STATUS "-------")
message(STATUS "Quoted parsing: print_args(\"foo bar\")")
print_args("foo bar")
# 1 arg: ["foo bar"]
message(STATUS "-------")
message(STATUS "Unquoted expansion: print_args(\${var_with_spaces})")
print_args(${var_with_spaces})
# 1 arg: ["foo bar"]
message(STATUS "-------")
message(STATUS "Quoted expansion: print_args(\"\${var_with_spaces}\")")
print_args("${var_with_spaces}")
# 1 arg: ["foo bar"]
message(STATUS "========================")
set(listvar more stuff)
message(STATUS "listvar: \"${listvar}\"")
message(STATUS "-------")
message(STATUS "Unquoted parsing: print_args(more;stuff)")
print_args(more;stuff)
# 2 args: ["more", "stuff"]
message(STATUS "-------")
message(STATUS "Quoted parsing: print_args(\"more;stuff\")")
print_args("more;stuff")
# 1 arg: ["more;stuff"]
message(STATUS "-------")
message(STATUS "Unquoted expansion: print_args(\${listvar})")
print_args(${listvar})
# 2 args: ["more", "stuff"]
message(STATUS "-------")
message(STATUS "Quoted expansion: print_args(\"\${listvar}\")")
print_args("${listvar}")
# 1 arg: ["more;stuff"]
message(STATUS "========================")
set(listvar2 "other;;trex;")
message(STATUS "listvar2: \"${listvar2}\"")
message(STATUS "-------")
message(STATUS "Unquoted parsing: print_args(other;;trex;)")
print_args(other;;trex;)
# 2 args: ["other", "trex"]
message(STATUS "-------")
message(STATUS "Quoted parsing: print_args(\"other;;trex;\")")
print_args("other;;trex;")
# 1 arg: ["other;;trex;]
message(STATUS "-------")
message(STATUS "Unquoted expansion: print_args(\${listvar2})")
print_args(${listvar2})
# 2 args: ["other", "trex"]
message(STATUS "-------")
message(STATUS "Quoted expansion: print_args(\"\${listvar2}\")")
print_args("${listvar2}")
# 1 arg: ["other;trex"]
message(STATUS "========================")
set(escapedSemicolon "all\;one arg;other arg")
message(STATUS "escapedSemicolon: \"${escapedSemicolon}\"")
message(STATUS "-------")
message(STATUS "Unquoted parsing: print_args(all\;one arg;other arg)")
print_args(all\;one arg;other arg)
# 4 args: ["all;one", "arg", "other", "arg"]
message(STATUS "-------")
message(STATUS "Quoted parsing: print_args(\"all\;one arg;other arg\")")
print_args("all\;one arg;other arg")
# 1 arg: ["all\;one arg;other arg"]
message(STATUS "-------")
message(STATUS "Unquoted expansion: print_args(\${escapedSemicolon})")
print_args(${escapedSemicolon})
# 2 args: ["all;one arg", "other arg"]
message(STATUS "-------")
message(STATUS "Quoted expansion: print_args(\"\${escapedSemicolon}\")")
print_args("${escapedSemicolon}")
# 1 arg: ["all\;one arg;other arg"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment