cmake:Parameters to $ must resolve to either '0' or '1'.
1514 ワード
コンパイラがmsvcでCMAKE_BUILD_TYPEがReleaseの場合、targetに
ここでは
cmake-generator-expressions式は以前何度も使ったことがありますが、比較的熟練していて、文法的に問題はないと思いますが、実際の運行時には間違っていました.
コードには
次に
-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で、まだ他のバージョンを試したことがありませんが、同じ問題があるかどうか分かりません.