CMake のCHECK_TYPE_SIZE
コマンドを条件付きで実行する方法はありますか? CHECK_TYPE_SIZE
は、構造体のサイズを把握するのに最適ですが、時間が経つにつれて、構造体を使用してヘッダー ファイルを変更して新しいフィールドを追加する可能性があるという問題があります。誰かが構造体を更新したが、CMake キャッシュを吹き飛ばすのを忘れた (または知らなかった) ときに起こるのを待っている事故のようです。はい、構造体の横にメモを置いて、更新された場合にキャッシュを消去することはできますが、複数人のプロジェクトがあり、他の誰かがヘッダー ファイルを更新した場合、それは実際には役に立ちません。
を実行しようとしましたunset(HAS_MYVAR CACHE)
が、機能が再実行されていないように見えるため、機能していないようです。何か案は?
コード:
CHECK_TYPE_SIZE("my_struct_t" MY_STRUCT_SIZE)
message("Struct size is ${MY_STRUCT_SIZE})
add_custom_target(get_size)
add_custom_command(TARGET get_size COMMAND echo ${MY_STRUCT_SIZE})
$ cmake -S . -B /tmp/test
...
Struct size is 40
...
$ cd /tmp/test
$ make get_size
40
Built target get_size
$ <mod stuct to be larger>
$ make get_size
40
Built target get_size