[CMake] C++11 flag not being added

Petr Bena benapetr at gmail.com
Fri Oct 16 07:38:27 EDT 2015


By stable you mean Jessie that was recently released and is almost
nowhere in production yet? :)

On my debian server:

$ cmake --version
cmake version 2.8.9

On one of wikimedia's ubuntu servers (the newer ones):

$ cmake --version
cmake version 2.8.12.2

On travis-ci cmake is about 2.8.7 and on ubuntu PPA builder it's probably same.

And we aren't even talking about 3.0, but 3.1 or newer. One would need
to be truly naive to expect newer version on some stable production
systems, that usually run well established older software (eg.
majority of them do).

On my dev PC I have last CMake of course, but I need to be able to
compile on other systems as well :)

This code is meant to be cross-platform and buildable on most of
supported OS'es, even on older versions. I sincerely hate programs
that requires extremely latest versions of tools or libraries for them
to work, because these are usually hard to build.

On Fri, Oct 16, 2015 at 11:56 AM, Hendrik Sattler
<post at hendrik-sattler.de> wrote:
>
>
> Am 16. Oktober 2015 11:29:48 MESZ, schrieb Petr Bena <benapetr at gmail.com>:
>>I think you completely misunderstood me. I know I can install it on my
>>machine, but I can hardly install it on PC's or servers of users who
>>use my program.
>>
>>I want to make it as easy as possible to let users compile my program.
>>Having to install anything by hand instead of system package manager
>>is a big overhead to majority of users. CMake 3x is too new, it's
>
>
> Hey, 3.0.2 is even available in Debian stable, and that really says something about older versions!
>
>
>>available by default almost nowhere, meaning this option is not
>>available to me at this time. Maybe in few years the situation will
>>change, but for now I will resort to that hack which works on older
>>versions that are generally available everywhere.
>>
>>On Fri, Oct 16, 2015 at 11:26 AM, Pau Garcia i Quiles
>><pgquiles at elpauer.org> wrote:
>>> Hello,
>>>
>>> CMake 3.3.1 is available from my PPA, in case it helps:
>>>
>>> https://launchpad.net/~pgquiles/+archive/ubuntu/ppa
>>>
>>>
>>>
>>> On Fri, Oct 16, 2015 at 10:58 AM, Petr Bena <benapetr at gmail.com>
>>wrote:
>>>>
>>>> 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
>>>> >
>>>> >
>>>> --
>>>>
>>>> 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
>>>
>>>
>>>
>>>
>>> --
>>> Pau Garcia i Quiles
>>> http://www.elpauer.org
>>> (Due to my workload, I may need 10 days to answer)
>>--
>>
>>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