这是我的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.
那么,如何使此警告静音?
答案 0 :(得分:2)
只需使用QUIET
,如下所示:
find_package(PackageName QUIET)
如果找不到软件包配置文件,除非指定QUIET参数,否则CMake将生成一个描述问题的错误。
https://cmake.org/cmake/help/v3.8/command/find_package.html?highlight=i