代码之家  ›  专栏  ›  技术社区  ›  Chen Li

如果找不到cmake的find_包,如何取消警告?

  •  1
  • Chen Li  · 技术社区  · 6 年前

    这是我的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 回复  |  直到 6 年前
        1
  •  2
  •   Tobias    6 年前

    只使用 QUIET 如下:

    find_package(PackageName QUIET)
    

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

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