gpt4 book ai didi

cmake - 从 cmake 可执行文件中获取所有包含文件夹

转载 作者:行者123 更新时间:2023-12-05 07:17:55 25 4
gpt4 key购买 nike

如何获取我的可执行文件的所有包含目录?我想引入cppcheck,我需要将所有include目录转发给cppcheck(也是接口(interface)导入库的include目录)。

例如我有

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.

最佳答案

在我的例子中,我刚刚创建了一个运行 Cppcheck 并使用我的项目的编译数据库作为输入的目标 - 参见 https://github.com/firewave/mame_regtest/blob/master/cppcheck.cmake .

要生成编译数据库,您只需添加

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

到您的 CMakeLists.txt

您也可以使用 CMake 中的集成支持,但我还没有这方面的经验。

关于cmake - 从 cmake 可执行文件中获取所有包含文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58592047/

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