[CMake] C++11 flag not being added

Petr Bena benapetr at gmail.com
Fri Oct 16 05:29:48 EDT 2015


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.

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)


More information about the CMake mailing list