How to set C++ standard?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How to set C++ standard?

Alex Chen

I tried to set the compiler flag –std=c++14 via cmake command line on Linux with –DCMAKE_CXX_STANDARD=14.  The message from ‘make’ shows   -std=c++11 –std=gnu++14

If I do not set that flag, I get -std=c++11.  This seem to imply the CMAKE_CXX_STANDARD flag sets gnu++ instead of c++.  How do I set the flag –std=c++14 then?

 

Alex Chen


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: How to set C++ standard?

Craig Scott-3
You generally shouldn't set CMAKE_CXX_STANDARD on its own, you should also be explicitly setting CMAKE_CXX_STANDARD_REQUIRED and CMAKE_CXX_EXTENSIONS to ensure you are getting the behaviour you want. These would also typically be set by the project's own CMakeLists.txt file rather than being passed on the cmake command line as cache variables. You may find the following article helpful:




On Fri, Apr 21, 2017 at 8:57 AM, Alex Chen <[hidden email]> wrote:

I tried to set the compiler flag –std=c++14 via cmake command line on Linux with –DCMAKE_CXX_STANDARD=14.  The message from ‘make’ shows   -std=c++11 –std=gnu++14

If I do not set that flag, I get -std=c++11.  This seem to imply the CMAKE_CXX_STANDARD flag sets gnu++ instead of c++.  How do I set the flag –std=c++14 then?

 

Alex Chen


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake



--
Craig Scott
Melbourne, Australia

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: How to set C++ standard?

Alex Chen

Thanks.  I find the problem in the source code where it uses CPP_STANDARD as suffix in –std=c++, therefore I should set CPP_STANDARD instead of the other one.

 

 

Alex Chen

 

From: Craig Scott <[hidden email]>
Date: Thursday, April 20, 2017 at 4:41 PM
To: Alex Chen <[hidden email]>
Cc: CMake <[hidden email]>
Subject: Re: [CMake] How to set C++ standard?

 

You generally shouldn't set CMAKE_CXX_STANDARD on its own, you should also be explicitly setting CMAKE_CXX_STANDARD_REQUIRED and CMAKE_CXX_EXTENSIONS to ensure you are getting the behaviour you want. These would also typically be set by the project's own CMakeLists.txt file rather than being passed on the cmake command line as cache variables. You may find the following article helpful:

 

 

 

 

On Fri, Apr 21, 2017 at 8:57 AM, Alex Chen <[hidden email]> wrote:

I tried to set the compiler flag –std=c++14 via cmake command line on Linux with –DCMAKE_CXX_STANDARD=14.  The message from ‘make’ shows   -std=c++11 –std=gnu++14

If I do not set that flag, I get -std=c++11.  This seem to imply the CMAKE_CXX_STANDARD flag sets gnu++ instead of c++.  How do I set the flag –std=c++14 then?

 

Alex Chen


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake



 

--

Craig Scott

Melbourne, Australia


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake