cmake:Parameters to $ must resolve to either '0' or '1'.


コンパイラがmsvcでCMAKE_BUILD_TYPEがReleaseの場合、targetに-arch:AVX2コンパイルオプションを追加し、コンパイラがgccでCMAKE_BUILD_TYPEがReleaseの場合、targetに-mavx2コンパイルオプションを追加します.
ここでは$式(cmake-generator-expressions)を用いた.
target_compile_options(${_target} PRIVATE 
	$,$>:-arch:AVX2>
	$ ,$>:-mavx2> )

cmake-generator-expressions式は以前何度も使ったことがありますが、比較的熟練していて、文法的に問題はないと思いますが、実際の運行時には間違っていました.
CMake Error at src/core/CMakeLists.txt:109 (target_compile_options):
  Error evaluating generator expression:

    $;,$>

  Parameters to $ must resolve to either '0' or '1'.

コードには$式が2回使用されていますが、1つ目は正常で、2つ目はエラーです.長い間見ても問題が見つからなかった.仕方ないので、GNU> ,ここ,号前のスペースを削除してみて(フォーマット上の美しさにわざわざスペースを追加しました)、通過!
次に$式を試してみるのも同じ問題です.結論として、$$式の中性子式の間の,番の区切り文字の前にスペースがあってはいけません(後ろにスペースがあってもいいです).よく考えてみると、$$式は、実装時に各サブ表現の戻り結果が文字列として処理され、スペースが追加されると、返される文字列の後ろにスペースが追加され、‘1’または‘0’ではなく、‘1 ’または‘0 ’であるため、Parameters to $ must resolve to either '0' or '1'.とエラーが発生する.しかし、なぜ‘,’以降のスペースが正常に処理されるのでしょうか.これはまだバグだと思います.私が使っているCMAKEバージョンは3.11.1で、まだ他のバージョンを試したことがありませんが、同じ問題があるかどうか分かりません.