如何获取可执行文件的所有包含目录? 我要介绍cppcheck,我需要将所有包含目录转发到cppcheck(以及接口导入库的包含目录)。
例如,我有
add_executable(my_exe main.cpp)
target_link_libraries(my_exe PRIVATE RapidJSON::RapidJSON)
如何获取my_exe的所有相应包含目录,包括RapidJSON目录(例如〜/ .conan / data / RapidJSON / 1.1.0 / a / b / package / x / include)?
我尝试了以下尝试,但没有成功:-(
get_target_property(ALL_INCLUDES my_exe INTERFACE_INCLUDE_DIRECTORIES) # NOTFOUND
get_target_property(ALL_INCLUDES my_exe INCLUDE_DIRECTORIES) # empty
add_executable(my_exe main.cpp)
target_link_libraries(my_exe PRIVATE RapidJSON::RapidJSON)
# the following line should be adapted so that the variable cppcheck_includes also contains the RapidJSON include directories
set(cppcheck_includes ${CMAKE_SOURCE_DIR}/includes)
add_custom_target(cppcheck
COMMAND cppcheck
--enable=all
--std=c++11
--library=/usr/share/cppcheck/cfg/std.cfg
--check-config
${cppcheck_includes}
main.cpp
)
我希望没有警告,但有警告:
Include file: <rapidjson/document.h> not found.
答案 0 :(得分:0)
就我而言,我刚刚创建了一个目标,该目标运行Cppcheck并将项目的编译数据库用作输入-参见https://github.com/firewave/mame_regtest/blob/master/cppcheck.cmake。
要生成编译数据库,您只需添加
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
到您的CMakeLists.txt
。
您也可以在CMake中使用集成支持,但是我对此还没有经验。