有没有办法有条件地运行 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