CMake and MinGW cannot disable "is deprecated" warnings also setting CMAKE_WARN_DEPRECATED

Viewed 27

I am using CMake version 3.23 with MinGW compiler

This are the basic CMAKE settings:

CMAKE_MINIMUM_REQUIRED(VERSION 3.23)

## GENERAL INITIALIZATION
SET(CMAKE_CXX_STANDARD          11)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
SET(CMAKE_CXX_EXTENSIONS        OFF)

I use CMake -G "MinGW Makefiles" .. to build the project with MinGW generator and everything works. To compile I can use both CMake --build . or mingw32-make.exe: they both warks but gives the warnings that I am describing.

The problem is that I am using some external libraries (boost, turtle) that uses the template<class> class std::auto_ptr that is deprecated. For this reason, when I compile my project, I get this warning:

C:/turtle/include/turtle/detail/action.hpp:220:22: warning: 'template<class> class std::auto_ptr' is deprecated [-Wdeprecated-declarations]
         mutable std::auto_ptr< Result > v_;
                      ^~~~~~~~

And many other of this type as well.

As I mentioned, those warnings are not a problem for compilation, but I would like to disable them.

I have tried to set CMAKE_WARN_DEPRECATED:

SET(CMAKE_WARN_DEPRECATED       OFF CACHE BOOL "" FORCE)

but it does not work.

I have also tried

add_compile_options(-Wno-deprecated-declarations)

but it does not work as well.

EDIT:

As suggested in the comments by Alex Reinking CMAKE_WARN_DEPRECATED is not related to compilation warning but to CMAKE warning.

The only way I've found to eliminate the warnings was to redefine CMAKE_CXX_FLAGS:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")

Hope it can be helpful

0 Answers
Related