gpt4 book ai didi

c++ - 如何访问 CMake 中的源文件名?

转载 作者:行者123 更新时间:2023-11-30 03:15:05 25 4
gpt4 key购买 nike

我想启用 code analysis使用 CMake 和忍者:

file(GLOB_RECURSE sources *.cpp)

target_sources(${target}
PRIVATE
${sources}
)

target_compile_options(${target}
PRIVATE
-analyze:log report.xml
-analyze:ruleset "${RuleSet}"
-analyze:quiet
)

生成的build.ninja大致如下(省略大量无关数据):

build foo.cpp.obj: CXX_COMPILER foo.cpp:
FLAGS = -analyze:log report.xml -analyze:ruleset "C:\rulesets\MixedRecommendedRules.ruleset" -analyze:quiet

build bar.cpp.obj: CXX_COMPILER bar.cpp
FLAGS = -analyze:log report.xml -analyze:ruleset "C:\rulesets\MixedRecommendedRules.ruleset" -analyze:quiet

问题在于每个源文件都是单独编译的,因此每次调用编译器时报告都会被覆盖

有没有办法像这样包含源文件名:

target_compile_options(${target}
PRIVATE
-analyze:log report_{source_file}.xml
-analyze:ruleset "${RuleSet}"
-analyze:quiet
)

最佳答案

我关注了这个suggestion并结束了以下内容:

file(GLOB_RECURSE sources *.cpp)

target_sources(${target}
PRIVATE
${sources}
)

foreach(source_file ${sources})
get_filename_component(file_name ${source_file} NAME)
set_source_files_properties(${source_file} PROPERTIES COMPILE_OPTIONS "-analyze:log ${file_name}_report.xml")
endforeach()

target_compile_options(${target}
PRIVATE
-analyze:ruleset "${RuleSet}"
-analyze:quiet
)

关于c++ - 如何访问 CMake 中的源文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57322271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com