отключить все предупреждения для тестов Google от cmake - PullRequest
1 голос
/ 03 мая 2020

У меня есть проект на c ++, который я компилирую с помощью cmake. Я также использую тесты Google. Это мои файлы 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")

Тесты. Файл cpp выдает несколько предупреждений во время компиляции с make. Например о неиспользованных переменных. Я полагаю, что они исходят от g cc:

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")

, но это не сработало.

1 Ответ

1 голос
/ 03 мая 2020

-Wall - флаг компилятора для включения всех предупреждений. Если вы не видите эти предупреждения, я бы начал с удаления этого флага компиляции.

Это означает, что вместо

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

попробуйте

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

Конечно, предупреждения компилятора обычно полезны. Если есть какой-либо практический вариант исправления этих предупреждений, это будет лучше в долгосрочной перспективе.

Или вы можете отключить предупреждения в самом коде. Например, если вы хотите отключить предупреждения G CC в одном файле, вы можете использовать #pragma:

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