[CMake] C++11 flag not being added

Petr Bena benapetr at gmail.com
Fri Oct 16 04:58:53 EDT 2015


If I did that nearly nobody would be able to compile my program as
cmake >= 3.1 is extremely rare on most distributions. Even ubuntu's
PPA builder has some ancient version.

On Fri, Oct 16, 2015 at 9:44 AM, Petr Kmoch <petr.kmoch at gmail.com> wrote:
> Hi Petr.
>
> You're using a feature (`CMAKE_CXX_STANDARD`) introduced in CMake version
> 3.1, so you should require a minimum version >= that.
>
> You can learn the version of CMake by running `cmake --version`
>
> Petr
>
> On Thu, Oct 15, 2015 at 5:45 PM, Petr Bena <benapetr at gmail.com> wrote:
>>
>> What do you mean by "target" property? I don't see any target
>> mentioned there. I don't have this line in there. I don't know which
>> CMake this is, it failed on server we use for unit tests, but I have
>> required min. version set to 2.8.7
>>
>>
>>
>> On Thu, Oct 15, 2015 at 5:41 PM, Matthew S Wallace
>> <mwallace at ccmtrading.com> wrote:
>> > What version of CMake are you using?  I’m using 3.3.2.  The only other
>> > thing I did was:
>> >
>> > set_property(GLOBAL PROPERTY CXX_STANDARD_REQUIRED)
>> >
>> > I’m guessing this probably does nothing since it is probably a target
>> > property.
>> >
>> > -Matt
>> >
>> >> On Oct 15, 2015, at 10:34 AM, Petr Bena <benapetr at gmail.com> wrote:
>> >>
>> >> Can you elaborate on it a bit?
>> >>
>> >> I put set(CMAKE_CXX_STANDARD 11) as first line of my CMakeLists and it
>> >> still doesn't work, without the hack I used I get errors while
>> >> compiling.
>> >>
>> >> Can you give me example file in which it works? I guess there is more
>> >> needed for it to work.
>> >>
>> >> On Tue, Oct 13, 2015 at 7:12 PM, Matthew S Wallace
>> >> <mwallace at ccmtrading.com> wrote:
>> >>> Thanks, setting the global variable solved my issue.
>> >>>
>> >>> -Matt
>> >>>
>> >>>> On Oct 13, 2015, at 10:46 AM, Johannes Zarl-Zierl
>> >>>> <johannes.zarl-zierl at jku.at> wrote:
>> >>>>
>> >>>> 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
>> >>>>
>> >>>> --
>> >>>>
>> >>>> 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
>> >>>
>> >>> --
>> >>>
>> >>> 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
>> >
>> --
>>
>> 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
>
>


More information about the CMake mailing list