为每个目标在CMake中设置CXX_INCLUDE_WHAT_YOU_USE属性

5
我在项目中有多个CmakeLists.txt文件,我想启用。
添加:
set_property(
  TARGETS MY-TARGET
  PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_path}
)

我希望你能为所有目标启用它,以避免在另一个已存在的CMakeLists.txt文件中出现冗余。

1个回答

10
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)

find_program(IWYU_PATH NAMES include-what-you-use iwyu)
if(NOT IWYU_PATH)
  message(FATAL_ERROR "Could not find the program include-what-you-use")
endif()
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE ${IWYU_PATH})
set(CMAKE_C_INCLUDE_WHAT_YOU_USE ${IWYU_PATH})

“文档”可以在这里找到:CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE


它不起作用。我认为是因为它没有将属性添加到目标上。 - David Bensoussan
2
在添加任何目标之前,您需要先执行此操作。 - rettichschnidi
但是你的原始代码只适用于单个目标吗?还是它未经测试?无论如何,我更新了答案以使其更加健壮。 - rettichschnidi
1
我有cmake版本,并且已经安装了,但我不知道它是什么,但是通过你的代码片段,任何人都不会失败。感谢您的时间。 - David Bensoussan
我想使用这个工具。但是在我的项目中,我使用的是gcc而不是clang。这仍然有效吗?到目前为止它还没有起作用。 - ilya1725
@ilya1725 这也适用于GCC(我使用的是cmake 3.19.4)。如果您没有看到IWYU警告,您可能需要进行清理构建。 - vitalstatistix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接