[英]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.