我正在尝试按照下面复制的 CMake 说明将以下项目 https://github.com/whoshuu/cpr#cmake 构建到我的项目中:
include(FetchContent)
FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/whoshuu/cpr.git GIT_TAG c8d33915dbd88ad6c92b258869b03aba06587ff9) # the commit hash for 1.5.0
FetchContent_MakeAvailable(cpr)
我的项目已经有一些与主要目标相关联的其他库,所以我按如下方式包含了这个新库:
target_link_libraries(my_target PRIVATE cpr::cpr PUBLIC other_libraries)
问题在于构建 cpr
库的警告阻止了项目的构建。我想抑制这些警告。我已尝试按照此处的建议添加 SYSTEM
关键字:How to suppress GCC warnings from library headers?,因此代码如下所示:
target_link_libraries(my_target PRIVATE SYSTEM cpr::cpr PUBLIC other_libraries)
但这没有帮助。是否有其他方法可以在 CMake 中抑制来自外部库的警告?如果有帮助,我正在使用 C++-17
g++-11
和 Ninja。
答案 0 :(得分:0)
我知道这在技术上不能回答您的问题,但是,我是新来的我无法发表评论。
我能找到的唯一方法是在代码中使用编译器编译指示禁用警告:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weverything"
#include <cpr/cpr.h>
#pragma GCC diagnostic pop
这取决于编译器。如果您使用 clang,只需将“GCC”替换为“clang”。在 Visual Studio 上,使用 pragma 警告...这可以通过宏进行移植,看看 this article。