[CMake] C++11 flag not being added

Roman Wüger roman.wueger at gmx.at
Fri Oct 16 05:22:48 EDT 2015


Hi Petr,

you can download CMake from https://cmake.org/download/.
There are also prebuilt binaries available.

We use the *.sh files to install CMake on our linux servers.

.) Install CMake to /opt/cmake-3.4.2.
.) Create a symlink to /opt/cmake
.) Create another symlink from the /opt/cmake/bin/* to /usr/bin

With this solution you only need to update the first symlink if you want to upgrade/downgrade a CMake version.

Best Regards
Roman

> Am 16.10.2015 um 10:58 schrieb Petr Bena <benapetr at gmail.com>:
> 
> 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


More information about the CMake mailing list