You forgot to double quote the string:
set(compileOptions "-Wall -Wextra -O3 -Wno-narrowing -ffast-math -march=native")
So, what ends up happening is that compileOptions is set to "-Wall," only, and the other tokens, such as "-Wextra", "-O3", etc, are parsed as options to the set command.