You can use CMake 3.x on older systems. Write platform checks for specific C++11 features and implement "old" style code if the C++11 features (e.g. lambdas) are not available.
Use https://cmake.org/cmake/help/v3.1/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html and https://cmake.org/cmake/help/v3.1/module/WriteCompilerDetectionHeader.html?highlight=compiler%20detection%20header#module:WriteCompilerDetectionHeader to detect if your compiler supports your implementation. Best Regards > Am 16.10.2015 um 14:09 schrieb Hendrik Sattler <p...@hendrik-sattler.de>: > > > > Am 16. Oktober 2015 13:38:27 MESZ, schrieb Petr Bena <benap...@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 >> <p...@hendrik-sattler.de> wrote: >>> >>> >>> Am 16. Oktober 2015 11:29:48 MESZ, schrieb Petr Bena >> <benap...@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 >>>> <pgqui...@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 <benap...@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.km...@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 <benap...@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 >>>>>>>> <mwall...@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 <benap...@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 >>>>>>>>>> <mwall...@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-zi...@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 > > -- > > 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