Для подавления предупреждений компилятора, исходящих из библиотек, которые я использую в своем приложении, я вручную включаю их каталоги с target_include_directories(myapp SYSTEM ...)
в качестве системных библиотек перед добавлением их с target_link_libraries
, например так:
add_executable(myapp myapp.cpp)
target_include_directories(myapp SYSTEM
PRIVATE "extern/lib/include"
)
target_link_libraries(myapp lib::lib)
Тем не менее, этот вид кажется хакерским и сломается, если разработчики lib
решат изменить путь включения. Это не будет проблемой, если использовать только target_link_library
, но, конечно, они будут включены через -I
, и снова я получу предупреждения компилятора, приходящие из этого включения.
Есть ли более элегантный и надежный способ сделать это? Было бы замечательно, если бы у target_link_libraries
была опция SYSTEM
, указывающая cmake включить ее в качестве системной библиотеки.