[CMake] C++11 flag not being added

Hendrik Sattler post at hendrik-sattler.de
Fri Oct 16 08:09:24 EDT 2015



Am 16. Oktober 2015 13:38:27 MESZ, schrieb Petr Bena <benapetr at gmail.com>:
>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.

They want to self-compile the latest of your software but use several years old versions of everything else?
I'd understand the Ubuntu use case but not the Debian oldstable one. 

If everyone develops like this, the software system grinds to a halt. Recursively, I mean.

Just as a reminder for you regarding people of other systems: using C++11 excludes a lot of older compilers, e.g. MS VS6 or 7.1 or 8 or 9 ;-)

OTOH, if you have a very specific target audience...

>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
>-- 
>
>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