我正在创建一个CMake项目,其中我的库的链接命令会生成一个附加的.map
文件(使用-Wl,-Map=my-file.map
GCC选项)。
该文件已正确创建,但我希望生成的 clean 任务能够像删除其他已生成文件一样正确删除该文件。
所以我试图让CMake知道要清除的“新”文件。
似乎将set_property和ADDITIONAL_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
)。
答案 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
命令要求您选择一个范围(DIRECTORY
或TARGET
),而不要同时选择两者。由于您想将此属性应用于my-target
目标,因此请仅使用{strong> TARGET
范围。
此外,ADDITIONAL_MAKE_CLEAN_FILES
目录属性已弃用,不应再使用。相反,请在此处使用ADDITIONAL_CLEAN_FILES
目标属性:
set_property(
TARGET my-target
APPEND
PROPERTY ADDITIONAL_CLEAN_FILES my-file.map
)