我已经编写了一个基于Clang的工具,并且希望在现有的CMake可执行目标上运行它。我希望这是一个单独的 Makefile目标,因此我可以在不构建exe目标的情况下运行它。
有一种解决方案可以在exe目标构建期间运行(如cmake clang-tidy (or other script) as custom target中所述)
set(CLANG_TIDY_EXE ${MY_CLANG_BASED_TOOL} )
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" " --my-additional-options")
set_target_properties(
my_exe_target PROPERTIES
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
)
CMake在my_exe_target构建期间运行我的工具。在构建日志中,我看到:
...
cmake -E __run_co_compile --tidy=my_tool --source=main.cpp -- ..
但是可以创建一个单独的目标吗?
答案 0 :(得分:1)
也许您可以使用add_custom_command,例如(根据您的var和其他需求进行调整):
add_custom_target(tidyup
COMMAND ${DO_CLANG_TIDY} [...] ${SOURCES}
DEPENDS [...]
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
修改(以解决OP问题):
一个好的出发点是搜索__run_co_compile
并尝试根据Makefile
规则重新创建命令(如果生成器为make
)。属性没有“自动”传播,因为自定义目标或命令可以是任何东西。您可以使用相应的cmake
variables(例如CMAKE_CXX_FLAGS
等)或目标properties(例如COMPILE_DEFINITIONS
)来模拟。