[CMake] C++11 flag not being added
Johannes Zarl-Zierl
johannes.zarl-zierl at jku.at
Tue Oct 13 11:46:39 EDT 2015
Hi,
CXX_STANDARD is a target property, not a global one. You can either set
CXX_STANDARD for every target that needs it, or set it globally by changing
the default value.
You can do the latter by setting the variable CMAKE_CXX_STANDARD before
defining any target that depends on it:
set(CMAKE_CXX_STANDARD 11)
HTH,
Johannes
On Tuesday 13 October 2015 10:22:36 Matthew S Wallace wrote:
> I have the following two lines in my CMakeLists.txt
>
> set_property(GLOBAL PROPERTY CXX_STANDARD 11)
> set_property(GLOBAL PROPERTY CXX_STANDARD_REQUIRED)
>
> However when compiling some of my source files, the -std=c++11 flag is not
> added.
>
> Just for good measure I added:
> target_compile_features(my_target PRIVATE cxx_strong_enums) to the target
> that was having the problem.
>
> Not sure if it matters, but in this case the compile error I’m getting is
> complaining because I’m referencing a fully scoped enum. If I explicitly
> include -std=c++11 in my compile flags, everything works.
>
> I’m thinking I’m probably just misunderstanding how CXX_STANDARD works, but
> any help would be appreciated.
>
> -Matt
More information about the CMake
mailing list