首页 > 解决方案 > CMake:清理其他生成的文件

问题描述

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

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

所以我试图让 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.

标签: cmake

解决方案


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

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

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

推荐阅读