[CMake] C++11 flag not being added

Hendrik Sattler post at hendrik-sattler.de
Fri Oct 16 06:03:41 EDT 2015



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

And what are those systems that bring an ancient cmake version but real C++11 support? Note that many C++ libraries must be recompiled with c++11 enabled during compilation when you want to use them in your C++11 program.

>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



More information about the CMake mailing list