从cmake禁用谷歌测试的所有警告



我有一个用cmake编译的c++项目。我也在使用谷歌测试。这些是我的cmake文件:

cmake_minimum_required(VERSION 3.5)
project(se-03-team-08 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 14)
if(EXISTS $ENV{HOME}/Qt/5.14.2/gcc_64)
set(CMAKE_PREFIX_PATH $ENV{HOME}/Qt/5.14.2/gcc_64)
endif()
if(EXISTS $ENV{HOME}/Qt/5.14.1/gcc_64)
set(CMAKE_PREFIX_PATH $ENV{HOME}/Qt/5.14.1/gcc_64)
endif()
include_directories(src)
add_subdirectory(src)
add_subdirectory(tests)
set(directory db)
add_custom_target(build-time-make-directory ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

测试:

cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR)
include_directories(${CMAKE_SOURCE_DIR})
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
# Find the QtTest library
find_package(Qt5 COMPONENTS Widgets Network Charts WebEngineWidgets Sql CONFIG REQUIRED)
qt5_add_resources(RESOURCES ../src/frontend/resource.qrc)
# Populate two CMake variables with the sources
set(test_SRCS tests.cpp)
set(project_SRCS 
../src/backend/game.cpp
../src/frontend/resource.qrc
)
add_executable(beergame-tests ${test_SRCS} ${project_SRCS} ${RESOURCES})
# set_target_properties(beergame-tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/)
target_link_libraries(beergame-tests Qt5::Widgets Qt5::Charts Qt5::WebEngineWidgets Qt5::Sql ${GTEST_LIBRARIES} pthread)
set(CMAKE_CXX_FLAGS "-g -O0 -Wall -fprofile-arcs -ftest-coverage")
set(CMAKE_C_FLAGS "-g -O0 -Wall -W -fprofile-arcs -ftest-coverage")
set(CMAKE_EXE_LINKER_FLAGS "-fprofile-arcs -ftest-coverage")

tests.cpp文件在使用make进行编译时会发出一些警告。例如,关于未使用的变量。我相信这些都来自gcc:

warning: unused variable ‘C’ [-Wunused-variable]
PlayerDialog* C = new PlayerDialog(&w, *newgame, consumer);

有什么办法可以禁用它们吗?

我尝试在此处添加-w

set(CMAKE_C_FLAGS "-g -O0 -Wall -W -fprofile-arcs -ftest-coverage")

但没有奏效。

-Wall是启用所有警告的编译器标志。如果你看不到这些警告,我会从删除编译标志开始。

这意味着,而不是

set(CMAKE_C_FLAGS "-g -O0 -Wall -W -fprofile-arcs -ftest-coverage")

尝试

set(CMAKE_C_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")

当然,编译器警告通常是一件好事。如果有任何实际的选择来修复这些警告,从长远来看会更好。

或者,您可以禁用代码本身中的警告。例如,如果您想在一个文件中静音GCC警告,可以使用#pragma:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wall"
... // warnings are now disabled
#pragma GCC diagnostic pop

相关内容

最新更新