当找不到CMAKE的find_package时,如何将其静音警告?



这是我的CMakeList的一部分.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.

那么,如何消除这个警告呢?

只需使用 QUIET ,如下所示:

find_package(PackageName QUIET)

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

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

最新更新