簡體   English   中英

禁用來自 cmake 的谷歌測試的所有警告

[英]disable all warnings for google tests from cmake

我有一個 c++ 項目,我正在使用 cmake 進行編譯。 我也在使用谷歌測試。 這些是我的 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM