如何取消设置 CMake 属性?

bjh*_*end 3 cmake

概括

我想在 CMake 中取消设置一个(布尔)属性,以便get_property(... SET)返回0尽管该属性首先被设置。将属性设置为0FALSE、 或OFF是不够的。如何实现这一目标?

背景

我有一些生成一些源文件的自定义命令。CMake 会自动将GENERATED源文件属性分配给这些文件。这似乎使 GNU Makefile 生成器添加一条规则来删除这些带有make clean.

但是,我不希望清理这些文件,因为一旦它们存在,用户就可以编辑它们。自定义命令应该仅确保它们不存在时生成。在配置时使用execute_process而不是自定义命令生成它们是不可行的。

设置GENERATED0FALSE、 或OFF不会从清理中排除源。

版本

  • 操作系统:Ubuntu 16.04
  • CMake:3.5.1(来自 Ubuntu 16.04 存储库)

我目前绑定了 Ubuntu 16.04,如果可能的话,应该避免让所有用户使用更新的 CMake 版本。

MSa*_*ers 6

您需要将其设置为

# 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 ()
Run Code Online (Sandbox Code Playgroud)

(来自https://github.com/Kitware/CMake/blob/master/Tests/Properties/CMakeLists.txt