当cmake的find_package找不到时,如何使警告静音?

时间:2019-01-18 11:33:03

标签: c++ cmake

这是我的CMakeLists.txt的一部分

  find_package(Catch2)
if(TARGET Catch2::Catch2)
  message("catch2 has been installed previously")
  include(Catch)
else()
  message("no target catch2")

  include(FetchContent)
  # Download and configure Catch2 for the tests
  FetchContent_Declare(
    catch2
    GIT_REPOSITORY https://github.com/catchorg/Catch2
    GIT_TAG master
    )

  FetchContent_GetProperties(catch2)
  if (NOT catch2_POPULATED)
    FetchContent_Populate(catch2)
    add_subdirectory(${catch2_SOURCE_DIR} ${catch2_BINARY_DIR})
    list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/contrib)
    include(Catch)
  endif()

endif()

我想做的是如果catch2可用,然后直接使用,否则,从github自动下载。除了此烦人的警告之外,它现在可以正常工作:

CMake Warning at test/CMakeLists.txt:9 (find_package):
  By not providing "FindCatch2.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Catch2", but
  CMake did not find one.

  Could not find a package configuration file provided by "Catch2" with any
  of the following names:

    Catch2Config.cmake
    catch2-config.cmake

  Add the installation prefix of "Catch2" to CMAKE_PREFIX_PATH or set
  "Catch2_DIR" to a directory containing one of the above files.  If "Catch2"
  provides a separate development package or SDK, be sure it has been
  installed.

那么,如何使此警告静音?

1 个答案:

答案 0 :(得分:2)

只需使用QUIET,如下所示:

find_package(PackageName QUIET)
  

如果找不到软件包配置文件,除非指定QUIET参数,否则CMake将生成一个描述问题的错误。

https://cmake.org/cmake/help/v3.8/command/find_package.html?highlight=i