CMake:清理其他生成的文件

时间:2020-06-18 13:11:47

标签: cmake

我正在创建一个CMake项目,其中我的库的链接命令会生成一个附加的.map文件(使用-Wl,-Map=my-file.map GCC选项)。

该文件已正确创建,但我希望生成的 clean 任务能够像删除其他已生成文件一样正确删除该文件。

所以我试图让CMake知道要清除的“新”文件。

似乎将set_propertyADDITIONAL_CLEAN_FILES组合在一起是解决方案,但我无法使其正常工作。

set_property(
        DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
        TARGET    my-target
        APPEND
        PROPERTY ADDITIONAL_MAKE_CLEAN_FILES my-file.map
)

请注意,我还想使CMake知道此文件来自my-target目标。这意味着仅当我清洁my-target目标时,才应删除此附加文件。

此外,如果将来有必要,我想将其他文件添加到此清理列表中(因此APPEND)。

2 个答案:

答案 0 :(得分:1)

您对set_property的呼叫无效。您可以设置目录属性或目标属性,但不能同时设置两者。

由于某些原因,您还使用了错误的属性名称。

此代码应正确设置the relevant target property并可以与Makefile生成器一起正常使用:

set_property(
  TARGET my-target
  APPEND
  PROPERTY ADDITIONAL_CLEAN_FILES my-file.map
)

答案 1 :(得分:1)

set_property命令要求您选择一个范围(DIRECTORYTARGET),而不要同时选择两者。由于您想将此属性应用于my-target目标,因此请仅使用{strong> TARGET范围。

此外,ADDITIONAL_MAKE_CLEAN_FILES目录属性已弃用,不应再使用。相反,请在此处使用ADDITIONAL_CLEAN_FILES目标属性:

set_property(
        TARGET my-target
        APPEND
        PROPERTY ADDITIONAL_CLEAN_FILES my-file.map
)
相关问题