我想在CMake中设置一个(布尔)属性,以使get_property(... SET)
返回0
,尽管该属性最初是设置的。将属性设置为0
,FALSE
或OFF
是不够的。如何实现?
我有一些自定义命令,它们会生成一些源文件。 CMake自动将GENERATED
源文件属性分配给这些属性。这似乎使GNU Makefile生成器添加了一条规则,以使用make clean
删除这些文件。
但是,我不希望清理这些文件,因为一旦它们存在,用户就可以对其进行编辑。自定义命令仅应确保它们不存在时才生成。在配置时使用execute_process
而不是custom命令生成它们是不可行的。
将GENERATED
设置为0
,FALSE
或OFF
不会将源从干净中排除。
我目前已绑定到Ubuntu 16.04,如果可能,应避免让所有用户使用最新的CMake版本。
答案 0 :(得分:1)
您需要将其设置为 :
# test unsetting a property
set_property(TARGET Properties PROPERTY TARGETTEST)
get_property(TARGETRESULT TARGET Properties PROPERTY TARGETTEST SET)
if (TARGETRESULT)
message(SEND_ERROR "Error: target prop not unset, "
"result is TARGETRESULT=${TARGETRESULT}")
endif ()
(来自https://github.com/Kitware/CMake/blob/master/Tests/Properties/CMakeLists.txt)