Получить все включаемые папки из исполняемого файла cmake - PullRequest
2 голосов
/ 28 октября 2019

Как я могу получить все включаемые каталоги моего исполняемого файла? Я хочу представить cppcheck, и мне нужно перенаправить все каталоги include в cppcheck (также каталоги 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.
...