如何取消设置CMake属性?

时间:2019-07-01 11:51:35

标签: cmake

摘要

我想在CMake中设置一个(布尔)属性,以使get_property(... SET)返回0,尽管该属性最初是设置的。将属性设置为0FALSEOFF是不够的。如何实现?

背景

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

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

GENERATED设置为0FALSEOFF不会将源从干净中排除。

版本

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

我目前已绑定到Ubuntu 16.04,如果可能,应避免让所有用户使用最新的CMake版本。

1 个答案:

答案 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