Как я могу получить все каталоги включения моего исполняемого файла? Я хочу ввести 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.
my_exe
. Вы на самом деле добавили какие-либо вызовы черезtarget_include_directories()
илиinclude_directories()
? Кроме того, не могли бы вы показать код, который находит пакет RapidJSON? - person squareskittles   schedule 28.10.2019rapidjson
через переменную типа${CONAN_RAPIDJSON_ROOT}
, поэтому вы сможете адаптировать свой cmake и добавить Rapidjson. - person ymochurad   schedule 28.10.2019${CONAN_INCLUDE_DIRS_RAPIDJSON}
, которая подробно описана здесь. Затем вам просто нужно объединить оба пути в вашу переменнуюcppcheck_includes
. - person Jean-Mathieu Vermosen   schedule 21.11.2019