我正在尝试使用
zmq
将 FetchContent
添加为第三方库。
然而,我对针对开发人员的警告不感兴趣。
由于我已将标签用于经过验证的版本,因此理想情况下它应该可以正常工作,没有任何错误或警告。
我不想为我的整个 CMake 项目配置使用
-Wno-dev
- 仅适用于我的第 3 方库。
我还没有找到在CMakeLists.txt
内执行此操作的方法。
我的
FetchContent
代码是:
FetchContent_Declare(
libzmq
GIT_REPOSITORY https://github.com/zeromq/libzmq.git
GIT_TAG v4.3.4
OVERRIDE_FIND_PACKAGE
)
FetchContent_MakeAvailable(libzmq)
我也没有找到自 v4.2.2 以来没有警告的版本 我已经用
BUILD_COMMAND
或 CONFIGURE_COMMAND
进行了测试,但通过阅读 CMake
或 FetchContent
的文档没有找到解决方案
我认为你可能不走运。来自 FetchContent 文档:
可以是<contentOptions>
命令理解的任何下载、更新或补丁选项。ExternalProject_Add()
请注意配置和构建选项不在该列表中(例如
CMAKE_ARGS
、CONFIGURE_COMMAND
)。
我查看了 CMake 变量列表,查找带有“dev”和“warn”的变量(通常在寻找此类事物的目录范围覆盖时,这就是您应该做的),但没有找到您想要的内容寻找。有
CMAKE_WARN_DEPRECATED
,但那不一样(这是针对 -Wno-deprecated
/-Wdeprecated
标志)。
我在 Jakub Zakrzewski 的 CMake Discourse 上找到了一个解决方案
https://discourse.cmake.org/t/disable-warning-on-fetched-projects/1978/2
基本上基于每个目标,您获取目标包含目录的属性,然后将这些包含目录标记为“SYSTEM”,这通常会导致编译器抑制警告。在下面的示例中,对于目标
sqlite_orm
:
get_target_property(sqlite_orm_include_dirs sqlite_orm INTERFACE_INCLUDE_DIRECTORIES)
set_target_properties(sqlite_orm PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${sqlite_orm_include_dirs}")
您必须为每个目标手动执行一次此操作。