[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cmake
Subject:    Re: [CMake] C++11 flag not being added
From:       Roman_Wüger <roman.wueger () gmx ! at>
Date:       2015-10-16 19:21:00
Message-ID: 53694B58-2AED-4DF3-BFF9-9C63596F93EB () gmx ! at
[Download RAW message or body]

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 <post@hendrik-sattler.de>:
> 
> 
> 
> Am 16. Oktober 2015 13:38:27 MESZ, schrieb Petr Bena <benapetr@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@hendrik-sattler.de> wrote:
> > > 
> > > 
> > > Am 16. Oktober 2015 11:29:48 MESZ, schrieb Petr Bena
> > <benapetr@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@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@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@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@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@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@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@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@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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic