View Issue Details

IDProjectCategoryView StatusLast Update
0032921Open CASCADEOCCT:Configurationpublic2022-09-11 14:52
Reporterddzama Assigned Toddzama  
PrioritynormalSeverityfeature 
Status verifiedResolutionfixed 
PlatformWindowsOSVC++ 2019 
Target Version7.7.0 
Summary0032921: Configuration, CMake - allow selecting C++ standard
DescriptionMake C++ standard to be enable from cmake settings:

User will be able choosing C++ language standard by selecting cmake variable BUILD_CPP_STANDARD.
For correct working, CMAKE_CXX_STANDARD cmake built-in variable should be available.
To enable CMAKE_CXX_STANDARD, minimum CMAKE version has been updated to 3.1.

Available next standard items:
C++11
C++14
C++17
C++20
C++23

OCCT remarks:
This issue consists from several steps to achive main goal:
1) Configuratiuon, CMake - allow selecting C++ standard.
2) Require minimum CMAKE version 3.1 (for enabling CMAKE_CXX_STANDARD).
3) More flexible CMAKE_CXX_COMPILER_ID identification (fixups previous commit!)
4) Add description of new CMAKE variable `BUILD_CPP_STANDARD` into documentation.
5) Update CMAKE requirements in documentation.
6) Set C++11 standard for several projects.

OCC Pr. remarks:
noop
Steps To ReproduceNot required
TagsNo tags attached.
Test case numberN/A

Relationships

child of 0032887 assignedddzama Open CASCADE Coding - Problem of compilation on VS2019/C++20 
child of 0033117 verifiedddzama Open CASCADE Coding, Configuration - migration to intel oneTBB 2021.5.0 (c++20 ready) 
child of 0032986 verifiedddzama Open CASCADE Samples - csharp sample is crashed on compilation with VC++ 2022 
Not all the children of this issue are yet resolved or closed.

Activities

git

2022-04-07 14:21

administrator   ~0107681

Branch CR32921 has been created by ddzama.

SHA-1: cafb923ca794c56fe8e69d75852d991b74c48b7b


Detailed log of new commits:

Author: Dmitry DZAMA
Date: Tue Mar 29 16:33:45 2022 +0300

    0032921: Make C++ standard to be enable from cmake settings
    
    Microsoft Visual Studio Professional 2019
    Version 16.11.11
    std=c++20
    
    Make C++ standard to be enable from cmake settings:
    
    Now, user can choose standard by setting cmake variable CPP_STANDARD.
    
    Availabale next standard itemd:
    C++11
    C++14
    C++17
    C++20
    C++23

git

2022-04-07 14:44

administrator   ~0107706

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 8b963c1d75a0d097249cb5f715b6ae8fc4dbbfc8

kgv

2022-04-08 01:45

developer   ~0107735

+# Set desired C++ standard
+if     ("${CPP_STANDARD}" STREQUAL "C++11")
+  set (CMAKE_CXX_STANDARD 11)


According to documentation:
> CMAKE_CXX_STANDARD - New in version 3.1.

While CMakeLists.txt in OCCT specifies:
> cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)

Either we need to increase minimal requirements to CMake, or fallback should be applied for older CMake versions (passing C++11 to compiler flags as before).

ddzama

2022-04-08 10:00

developer   ~0107740

Now, different libs have different requirement to CMAKE version:

adm/cmake/cotire.cmake:cmake_minimum_required(VERSION 2.8.12)
CMakeLists.txt:cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)
samples/glfw/CMakeLists.txt:cmake_minimum_required(VERSION 3.2)
samples/java/jniviewer/app/src/main/jni/CMakeLists.txt:cmake_minimum_required(VERSION 3.4.1)
samples/mfc/standard/01_Geometry/CMakeLists.txt:cmake_minimum_required (VERSION 2.6)
samples/mfc/standard/02_Modeling/CMakeLists.txt:cmake_minimum_required (VERSION 2.6)
samples/mfc/standard/03_ImportExport/CMakeLists.txt:cmake_minimum_required (VERSION 2.6)
samples/mfc/standard/04_HLR/CMakeLists.txt:cmake_minimum_required (VERSION 2.6)
samples/mfc/standard/mfcsample/CMakeLists.txt:cmake_minimum_required (VERSION 2.6)
samples/webgl/CMakeLists.txt:cmake_minimum_required(VERSION 3.2)
samples/xaml/CMakeLists.txt:cmake_minimum_required(VERSION 3.4.0)
tools/CMakeLists.txt:cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)

Maybe use unique requirement to CMAKE version, set in main cmake file?

kgv

2022-04-08 14:23

developer   ~0107754

Last edited: 2022-04-08 14:24

@ddzama,

I don't see how CMake requirements to build some sample depend on CMake requirements for building OCCT.
Samples could be built using OCCT pre-built on another computer with another CMake version and without using CMake at all.
And a particular sample might indeed require a higher CMake version than OCCT itself - but OCCT users are not required to build all these samples.

But there is another issue with the patch - it is unclear which consequences could be building OCCT and projects (samples, OCC Products) with mixed/incompatible versions of C++ standard.
So that I guess C++ version selection should be propagated to all samples and OCC Products (could be done in dedicated bug/patch).

git

2022-04-08 14:44

administrator   ~0107755

Branch CR32921 has been updated by ddzama.

SHA-1: 18738b72e9fa73afc791b44094d73b49d2bf7862


Detailed log of new commits:

Author: ddzama
Date: Fri Apr 8 14:43:59 2022 +0300

    require minimum CMAKE version 3.1 (for enabling CMAKE_CXX_STANDARD)

git

2022-04-20 11:14

administrator   ~0108038

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 73e424210859e0303f5ed4da04d46a2940aed41e

git

2022-04-25 15:35

administrator   ~0108152

Branch CR32921 has been updated by ddzama.

SHA-1: 0e3d7c4cbdfce581e8a359a7a281a93f8e6461e7


Detailed log of new commits:

Author: ddzama
Date: Mon Apr 25 12:16:14 2022 +0300

    0032921: Preserve cmake policies.

git

2022-04-25 17:37

administrator   ~0108166

Branch CR32921 has been updated by ddzama.

SHA-1: e76e6b90dfc427439bc381da20df8765e1245e81


Detailed log of new commits:

Author: ddzama
Date: Mon Apr 25 17:37:13 2022 +0300

    Revert "0032921: Fix `if()` contents for employing new cmake policy `CMP0054`, started since version 3.1."
    
    This reverts commit 73e424210859e0303f5ed4da04d46a2940aed41e.

git

2022-04-26 02:13

administrator   ~0108178

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 6b480960d6af94baf41c94f9c5bd9d2d732463a1

kgv

2022-04-26 21:47

developer   ~0108200

@ddzama
+# For moving from minimal cmake version 2.8.12 to 3.1,
+# we, nevertheless, have to use 2.8.12 cmake policies
+cmake_policy(VERSION 2.8)
...
+# Set cmake version, but preserve cmake policies
+cmake_policy(PUSH)
+cmake_minimum_required (VERSION 3.1 FATAL_ERROR)
+cmake_policy(POP)

There is no way to use new polices from CMake 3.1 without warnings?
They are useless and step in a wrong direction?

kgv

2022-04-26 22:02

developer   ~0108201

Last edited: 2022-04-26 22:03

+else ()
+  set (CMAKE_CXX_STANDARD 23)

Why "else" means "23"? Shouldn't be there an error in case of unknown string?

--- a/adm/genproj.tcl
+++ b/adm/genproj.tcl

I don't think modifications of Code::Blocks generator have been actually tested and are necessary in scope of this patch.
If we would like to expose C++ standard selection with 'genproj.bat' - at first, Visual Studio project files should be updated and selection should be exposed to `genconf.tcl`.
This could be postponed to a dedicated patch.

> Availabale next standard itemd:

Two misprints.

> Microsoft Visual Studio Professional 2019
> Version 16.11.11
> std=c++20

This text looks unrelated to commit message.

> Now, user can choose standard by setting cmake variable CPP_STANDARD.

Documentation should be updated to mention new CMake parameter.

kgv

2022-04-26 22:05

developer   ~0108202

Consider renaming new CMake variable to have `BUILD_` prefix for better grouping.

ddzama

2022-05-04 15:12

developer   ~0108304

Last edited: 2022-05-04 15:15

@kgv, yes.
If moving cmake minimum required version from 2.8 to 3.1, the list of new policies is applied by default (if not preserve policies, as proposed above).
If not preserve policies, compilation on Windows will cause errors.

Introduced in 3.0
CMP0050: Disallow add_custom_command SOURCE signatures.
CMP0049: Do not expand variables in target source entries.
CMP0048: project() command manages VERSION variables.
CMP0047: Use QCC compiler id for the qcc drivers on QNX.
CMP0046: Error on non-existent dependency in add_dependencies.
CMP0045: Error on non-existent target in get_target_property.
CMP0044: Case sensitive Lang_COMPILER_ID generator expressions.
CMP0043: Ignore COMPILE_DEFINITIONS_Config properties.
CMP0042: MACOSX_RPATH is enabled by default.
CMP0041: Error on relative include with generator expression.
CMP0040: The target in the TARGET signature of add_custom_command() must exist.
CMP0039: Utility targets may not have link dependencies.
CMP0038: Targets may not link directly to themselves.
CMP0037: Target names should not be reserved and should match a validity pattern.
CMP0036: The build_name command should not be called.
CMP0035: The variable_requires command should not be called.
CMP0034: The utility_source command should not be called.
CMP0033: The export_library_dependencies command should not be called.
CMP0032: The output_required_files command should not be called.
CMP0031: The load_command command should not be called.
CMP0030: The use_mangled_mesa command should not be called.
CMP0029: The subdir_depends command should not be called.
CMP0028: Double colon in target name means ALIAS or IMPORTED target.
CMP0027: Conditionally linked imported targets with missing include directories.
CMP0026: Disallow use of the LOCATION target property.
CMP0025: Compiler id for Apple Clang is now AppleClang.
CMP0024: Disallow include export result.

And introduced in 3.1
CMP0054: Only interpret if() arguments as variables or keywords when unquoted.
CMP0053: Simplify variable reference and escape sequence evaluation.
CMP0052: Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES.
CMP0051: List TARGET_OBJECTS in SOURCES target property.

git

2022-05-04 15:16

administrator   ~0108305

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 0bdb1002364e321ab155c14e869890f6ad974765

git

2022-05-04 15:21

administrator   ~0108308

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 32bda6940ed830a337c9431121a14d97d9bcb656

kgv

2022-05-04 15:29

developer   ~0108309

@ddzama, my question was different - policies in CMake looks like a compatibility hacks, and I'm not sure that the old policies will not be removed in some newer CMake release.
So the question is actually - is it possible update our CMake scripts so that they will be compatible with new CMake policies without playing with policies?

ddzama

2022-05-04 15:48

developer   ~0108314

@kgv, i think it is, but, firstly - i should define what particular new policy(s) breaks compilation.
And second - find out, how to fix it.
And, yes, old policies may be removed in newer version of CMake software.
Will i do this work now in current ticket?

git

2022-05-05 15:02

administrator   ~0108349

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: b3bba91506387d8d50ab30fbd8618d845265ca40

ddzama

2022-05-06 12:51

developer   ~0108365

@kgv, new policies (one or more from them) breaks compilation on MacOS.
I try to find out the cause by comparing successed build directory with failed build directory, but until current moment unsuccessful.

git

2022-05-06 16:13

administrator   ~0108379

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 82da07e44807cce3bba190d55a29f6d9c5f9d191

ddzama

2022-05-07 01:08

developer   ~0108381

@kgv, the problem on MacOs was in naming of cxx compilator.
This is strange, but if we use cmake minimal 2.8 it called Clang, when we require 3.1 as minimal version - AppleClang. So, I fixed it by replace more strength STREQUAL operator to MATCHES one and just in case make it case insensitive.

Successfully finished jenkins:
http://jenkins-test-occt.nnov.opencascade.com/view/CR32887-master-ddzama/view/GIT/

kgv

2022-05-13 00:28

developer   ~0108419

> if we use cmake minimal 2.8 it called Clang, when we require 3.1 as minimal version - AppleClang.
Interesting to know. I guess CMake developers decided to introduce "AppleClang" to distinguish this CLang fork coming with XCode.
As these compilers have independent and inconsistent versioning, specific bugs and features sets, tracking them as the same one complicated handling some corner cases.

kgv

2022-05-18 11:07

developer   ~0108480

@ddzama, if patch is ready for review, please don't forget to switch bug into appropriate state.

ddzama

2022-05-20 05:41

developer   ~0108504

Last edited: 2022-05-20 12:58

@kgv, sorry for my late response. My activity in this direction has been suspended by other projects, and I do not understend entirely your last remark -should I change installatin direcory for occt, depending on cmake variable CMAKE_COMPILER_ID, and, therefore, for IFC, because IFC should receive the same installation directory. By other words, should we install occt in AppleClang/ directory or clang/ directory is stay fine?

kgv

2022-05-20 12:25

developer   ~0108509

@ddzama, I didn't put any remark related to AppleClang - just put a comment.

I don't know how it affects installation directory.
In my opinion all CLang checks in CMake scripts should be updated to treat both values - in the same way.
Save the parts, where AppleClang is supposed to be handled differently - I guess such places might be found in `if(APPLE)` cases in existing scripts (don't know if it worth changing these places).

ddzama

2022-05-20 12:50

developer   ~0108510

Last edited: 2022-05-20 12:53

@kgv, ok
There would be one commit - now there is not any reason to preserve policies when requiring cmake_minimal_version (VERSION 3.1)

git

2022-05-25 07:35

administrator   ~0108601

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: dc9e78147e5bef405480e433b7033a91f031ee5f

ddzama

2022-05-25 07:41

developer   ~0108603

@kgv, sorry.
I think we should push before and pop after policies requiring cmake version outside main CMakeLists.txt, because it may be changed in future.
After achieving jenkins result, i move this ticket.

kgv

2022-05-25 11:14

developer   ~0108604

@msv, please comment if you have any remarks to proposed solution.

msv

2022-05-25 12:49

developer   ~0108605

Last edited: 2022-05-25 12:54

When using the variable CMAKE_CXX_STANDARD to set standard to C++14 when building ASRV on Ubuntu 18.04 with gcc 7.5 and cmake 3.22.1, I faced with the problem that GCC indeed used the standard C++11. So, setting only that variable does not dictate cmake to use this standard mandatory.
I found the solution by setting the following:
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

So, I propose to include this setting in our scripts, too.

msv

2022-05-25 12:51

developer   ~0108606

One more remark, I did not understand why we left the old policies in some samples' scripts? Is it possible to avoid this?

msv

2022-05-25 12:53

developer   ~0108607

What about the same feature in occt-products repository? I think this ticket must include changes there, too.

kgv

2022-05-25 13:15

developer   ~0108609

@msv

> set(CMAKE_CXX_STANDARD_REQUIRED ON)
Would this lead to failure building with default C++11 option on VS2019, as this compiler doesn't support this standard or this check validates only `>=`?

git

2022-05-26 16:41

administrator   ~0108630

Branch CR32921 has been updated by ddzama.

SHA-1: 67f59a1b0ab2a1f2dc28bb204f73060e17ddf0ce


Detailed log of new commits:

Author: ddzama
Date: Wed May 25 07:33:34 2022 +0300

    0032921: do not preserve policies

git

2022-05-27 10:01

administrator   ~0108639

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 625aa3594315c5682b4ec7b11c223208e5dd3c2c

git

2022-05-27 10:11

administrator   ~0108640

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: e57072dad28765863d2362023617f75c83fd8368

ddzama

2022-05-27 13:04

developer   ~0108646

@kgv, @msv
set(CMAKE_CXX_STANDARD_REQUIRED ON) has been added after setting c++ standard.
get rid of preserving cmake policies.
Jenkins teset has been executed successfully.

kgv

2022-05-27 14:20

developer   ~0108653

Last edited: 2022-05-27 14:20

> So, source of error has been localizedin file occt_toolkit.cmake, in lines ~325 and ~327.

Information about line numbers doesn't look useful in git commit description.

The patch should be squashed into a single commit before integration / sending for review (squashed patch pushed to a branch with incremented revision number).

msv

2022-05-27 14:39

developer   ~0108655

Still waiting actual test results.

git

2022-05-30 00:16

administrator   ~0108736

Branch CR32921 has been updated by ddzama.

SHA-1: 5747d04a6ec0f8cb5ac6a1709f4ee2a66b794719


Detailed log of new commits:

Author: ddzama
Date: Mon May 30 00:03:01 2022 +0300

    0032921: use std/c++20 as default c++ language standard

git

2022-05-30 00:18

administrator   ~0108737

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 3b75a51a7525dedb1db96470b3e58c8a9b1b9da0

git

2022-06-02 13:24

administrator   ~0108791

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: a2c019bd12d3149ed5ee8f600b9bcb3d943e193c

git

2022-06-03 12:40

administrator   ~0108821

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: a035f39ce25c76ea804b875b00954dd9724620e4

git

2022-06-21 11:40

administrator   ~0109136

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: dd7d6cc2cf437164174b9463ba82f21a122d420b

ddzama

2022-06-24 07:07

reporter   ~0109211

@msv - please, see on testing results on jenkins-8 and jenkins-11

http://jenkins-test-occt.nnov.opencascade.com/view/CR32887-cxx11/view/COMPARE/

http://jenkins-test-11.nnov.opencascade.com/view/CR32887_CR32887/

kgv

2022-06-24 09:40

developer   ~0109217

@ddzama

ddzama => bugmaster 
assigned => resolved

Please never assign bugs in RESOLVED state to bugmaster - bugs should be assigned to reviewer first.

kgv

2022-06-24 09:41

developer   ~0109218

@ddzama

+# So, it should compiles with c++11/c++14 language standard.

`should be compiled`.

+# Current Qt version is incompatible with c++20.

Which exactly `current version` is mentioned here?
Please be more specific in the code, not just in git commit description.

because of incomatibility of 5.11.2 version of Qt library interface with C++20 standard.

`incomatibility` misprint.
Qt 5 is NOT the latest version of this library, users are already using Qt 6 in some projects.

+set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
\ No newline at end of file

Please add suggested newlines.
These repetitive hacks in individual projects looks fragile - it would be better unifying this somehow.

git

2022-08-17 10:40

administrator   ~0110250

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 2357da14386ac2c76fd8ec6e8d33b1f33d9c67f7

git

2022-08-18 12:47

administrator   ~0110290

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 753a236222795c3799443a434c0e400b34d59544

git

2022-08-18 12:49

administrator   ~0110291

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 569ba9afe2e9215c14ab8945bceecb3e93384414

git

2022-08-18 12:57

administrator   ~0110292

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 739b3dc536d507ac06f892934c8aa46b02e92c2f

ddzama

2022-08-18 13:00

reporter   ~0110293

@kgv - remarks has been took into account. Please review it.

git

2022-08-22 10:31

administrator   ~0110334

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 5972e32378d05b2af27dbcd8a2a09a57ade81f97

git

2022-08-29 12:50

administrator   ~0110399

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: 17746dc51abdaf48aeadfd055d2469b0b185b7bb

msv

2022-08-29 12:59

developer   ~0110402

Please correct the grammar error, correct is `should be compiled`.
+# So, it should compiles with c++11/c++14 language standard.

git

2022-08-29 13:33

administrator   ~0110406

Branch CR32921 has been updated forcibly by ddzama.

SHA-1: efc007f0449b174332de316b57d834996edac19b

git

2022-08-29 13:43

administrator   ~0110407

Branch CR32921_1 has been created by ddzama.

SHA-1: 97e949adba741c1b53c3c56e99cb41b9ad3555d2


Detailed log of new commits:

Author: ddzama
Date: Wed May 4 12:57:51 2022 +0300

    0032921: Summary (c++ standard enabled)
    
    0032921: Configuratiuon, CMake - allow selecting C++ standard
    
    Make C++ standard to be enable from cmake settings:
    Now, user can choose standard by setting cmake variable CPP_STANDARD.
    Available next standard items: C++11, C++14, C++17, C++20, C++23.
    
    0032921: require minimum CMAKE version 3.1 (for enabling CMAKE_CXX_STANDARD)
    
    If we require CMAKE minimal version 3.1, rather than 2.8,
    by default new policies are employed:
    from CMP0024 to CMP0054.
    Unique problematic policy is CMP0054:
    `Only interpret if() arguments as variables or keywords when unquoted.`
    
    Requiring of 3.1 as minimal version without preserving old behavior of 54th policy breaks MSVC compilation.
    If we require cmake_policy (SET CMP0054 OLD), compilation finishs without errors.
    New behavior of CMP0054 leads to changes in next target MSVC vcxproj files:
     - TKV3d
     - TKOpenGl
     - TKOpenGlTest
     - TKOpenGles
     - TKOpenGlesTest
    Difference is absense of HAVE_OPENGL/HAVE_OPENGLES definitions.
    So, source of error has been localizedin file occt_toolkit.cmake, in lines ~325 and ~327.
    In accordance with old CMP0054 policy "CSF_OpenGlLibs" interprets as variable CSF_OpenGlLibs, rather than just a string.
    Contrary, new policy interpret "CSF_OpenGlLibs" as a string.
    To employ new policy, began since CMAKE 3.1 we should replace "CSF_OpenGlLibs" to "${CSF_OpenGlLibs}"
    and "CSF_OpenGlesLibs" to "${CSF_OpenGlesLibs}".
    
    P.S.
    
    When cmake policy CMP0054 is set to NEW
    expression
      "${CURRENT_CSF}" STREQUAL "CSF_OpenGlLibs"
    is false,
    while if policy CMP0054 is set to OLD
    expression
      "${CURRENT_CSF}" STREQUAL "CSF_OpenGlLibs"
    is true.
    If replace "CSF_OpenGlLibs" to "${CSF_OpenGlLibs}"
    expression is true independent on CMP0054 policy.
    Notice, that OLD policy had beed taken place by default on master before
    this ticket integration.
    
    0032921: more flexible CMAKE_CXX_COMPILER_ID identification (fixups previous commit!)
    
    0032921: Add description of new CMAKE variable `BUILD_CPP_STANDARD` into documantation.
    
    0032921: Update CMAKE requirements in documentation.
    
    0032921: Set C++11 standard for several projects.
    
    Several projects depends on Qt library 0f 5.11.2 version.
    TKDFBrowser
    TKMessageView
    TKShapeView
    TKTInspector
    TInspectorEXE
    TKTreeModel
    TKMessageModel
    TKVInspector
    TKToolsDraw
    TKTInspectorAPI
    TKView
    
    When using C++20 language standard, compilation errors occures because
    of incompatibility of 5.11.2 version of Qt library interface with C++20 standard.
    Therefore, these projects stay on C++11 language standard.

git

2022-08-29 15:19

administrator   ~0110413

Branch CR32921_1 has been updated forcibly by ddzama.

SHA-1: e84d14d77c45bb2908fb5b8f77deda0c80632596

git

2022-08-29 15:24

administrator   ~0110414

Branch CR32921_1 has been updated forcibly by ddzama.

SHA-1: 9878ecf23691b1bf94e749fa474fe22a4f8344d9

msv

2022-08-29 15:28

developer   ~0110415

For integration:
occt - CR32921_1
products - none

git

2022-08-31 17:04

administrator   ~0110502

Branch CR32921_1 has been updated forcibly by ddzama.

SHA-1: f52674bac0a3a1b5d55578dc97ab2e0da1bac4c7

msv

2022-09-01 13:32

developer   ~0110529

Please create the branch for products.

git

2022-09-05 09:41

administrator   ~0110606

Branch CR32921_1 has been updated forcibly by ddzama.

SHA-1: 3b76a8733786eb6b29d2667b400a5ca4d02af5cb

ddzama

2022-09-05 10:48

reporter   ~0110617

@msv, corresponding occ pr branch is CR32921.

msv

2022-09-05 12:47

developer   ~0110645

The commit message title is not relevant.

git

2022-09-06 16:15

administrator   ~0110751

Branch CR32921_1 has been updated forcibly by ddzama.

SHA-1: c21b3ed2e443dc7158f1f1c44382061f3b5cda27

ddzama

2022-09-06 16:18

reporter   ~0110752

@msv - the bug title has been updated, OCCT branch CR32921_1 commit message has been updated,
OCC Pr. branch CR32921 commit message has been updated too.

(@kgv - FYI)

msv

2022-09-06 18:44

developer   ~0110767

For integration:
occt - CR32921_1
products - CR32921

smoskvin

2022-09-11 13:57

administrator   ~0110929

Combination -
OCCT branch : IR-2022-09-09
master SHA - 526c506cb0a6a5c9c168ab5efd0a4e5211e30bf4
e0ceb716c70188b98130b1550914140d0502a6f9
Products branch : IR-2022-09-09 SHA - changes and them, and you can discard any commits you make in this
574253b6b844635a69038511e6920877f837e298
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 18959.200000000466 / 18756.090000000648 [+1.08%]
Products
Total CPU difference: 12020.780000000137 / 11992.830000000133 [+0.23%]
Windows-64-VC14:
OCCT
Total CPU difference: 20894.5625 / 20851.65625 [+0.21%]
Products
Total CPU difference: 13470.484375 / 13574.0625 [-0.76%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2022-09-11 14:51

administrator   ~0110942

Branch CR32921 has been deleted by mnt.

SHA-1: efc007f0449b174332de316b57d834996edac19b

git

2022-09-11 14:51

administrator   ~0110943

Branch CR32921_1 has been deleted by mnt.

SHA-1: c21b3ed2e443dc7158f1f1c44382061f3b5cda27

Related Changesets

occt: master e92d322d

2022-05-04 12:57:51

ddzama


Committer: smoskvin Details Diff
0032921: Configuration, CMake - allow selecting C++ standard.

Make C++ standard to be enable from cmake settings:

User will be able choosing C++ language standard by selecting cmake variable BUILD_CPP_STANDARD.
For correct working, CMAKE_CXX_STANDARD cmake built-in variable should be available.
To enable CMAKE_CXX_STANDARD, minimum CMAKE version has been updated to 3.1.

Available next standard items:
C++11
C++14
C++17
C++20
C++23

This issue consists from several steps to achive main goal:
1) Configuratiuon, CMake - allow selecting C++ standard.
2) Require minimum CMAKE version 3.1 (for enabling CMAKE_CXX_STANDARD).
3) More flexible CMAKE_CXX_COMPILER_ID identification (fixups previous commit!)
4) Add description of new CMAKE variable `BUILD_CPP_STANDARD` into documentation.
5) Update CMAKE requirements in documentation.
6) Set C++11 standard for several projects.
Affected Issues
0032921
mod - adm/cmake/cotire.cmake Diff File
mod - adm/cmake/occt_defs_flags.cmake Diff File
mod - adm/cmake/occt_macros.cmake Diff File
mod - adm/cmake/occt_toolkit.cmake Diff File
mod - CMakeLists.txt Diff File
mod - dox/build/build_occt/building_occt.md Diff File
mod - dox/introduction/introduction.md Diff File
mod - samples/glfw/adm/cmake/FindOpenCASCADE.cmake Diff File
mod - samples/glfw/CMakeLists.txt Diff File
mod - samples/java/jniviewer/app/src/main/jni/CMakeLists.txt Diff File
mod - samples/mfc/standard/01_Geometry/CMakeLists.txt Diff File
mod - samples/mfc/standard/02_Modeling/CMakeLists.txt Diff File
mod - samples/mfc/standard/03_ImportExport/CMakeLists.txt Diff File
mod - samples/mfc/standard/04_HLR/CMakeLists.txt Diff File
mod - samples/mfc/standard/mfcsample/CMakeLists.txt Diff File
mod - samples/webgl/CMakeLists.txt Diff File
mod - tools/CMakeLists.txt Diff File
mod - tools/TInspectorEXE/CMakeLists.txt Diff File
mod - tools/TKDFBrowser/CMakeLists.txt Diff File
mod - tools/TKMessageModel/CMakeLists.txt Diff File
mod - tools/TKMessageView/CMakeLists.txt Diff File
mod - tools/TKShapeView/CMakeLists.txt Diff File
mod - tools/TKTInspector/CMakeLists.txt Diff File
mod - tools/TKTInspectorAPI/CMakeLists.txt Diff File
mod - tools/TKToolsDraw/CMakeLists.txt Diff File
mod - tools/TKTreeModel/CMakeLists.txt Diff File
mod - tools/TKView/CMakeLists.txt Diff File
mod - tools/TKVInspector/CMakeLists.txt Diff File

occt-products: master e8a9460d

2022-08-22 12:46:12

ddzama


Committer: smoskvin Details Diff
0032921: Configuration, CMake - allow selecting C++ standard.

Make C++ standard to be enable from cmake settings:

User will be able choosing C++ language standard by selecting cmake variable BUILD_CPP_STANDARD.
For correct working, CMAKE_CXX_STANDARD cmake built-in variable should be available.
To enable CMAKE_CXX_STANDARD, minimum CMAKE version has been updated to 3.1.

Available next standard items:
C++11
C++14
C++17
C++20
C++23
Affected Issues
0032921
mod - adm/cmake/occt_defs_flags.cmake Diff File
mod - diff Diff File
mod - diff Diff File
mod - diff Diff File

Issue History

Date Modified Username Field Change
2022-04-07 12:12 ddzama New Issue
2022-04-07 12:12 ddzama Assigned To => ddzama
2022-04-07 12:20 kgv Category OCCT:Coding => OCCT:Configuration
2022-04-07 12:20 kgv Summary Make C++ standard to be enable from cmake settings => Configuratiuon, CMake - allow selecting C++ standard
2022-04-07 12:20 kgv Description Updated
2022-04-07 12:20 kgv Relationship added child of 0032887
2022-04-07 14:21 git Note Added: 0107681
2022-04-07 14:44 git Note Added: 0107706
2022-04-07 14:51 ddzama Relationship deleted child of 0032887
2022-04-07 14:54 ddzama Relationship added child of 0032887
2022-04-08 01:45 kgv Note Added: 0107735
2022-04-08 10:00 ddzama Note Added: 0107740
2022-04-08 14:23 kgv Note Added: 0107754
2022-04-08 14:24 kgv Note Edited: 0107754
2022-04-08 14:44 git Note Added: 0107755
2022-04-20 11:14 git Note Added: 0108038
2022-04-25 15:35 git Note Added: 0108152
2022-04-25 17:37 git Note Added: 0108166
2022-04-26 02:13 git Note Added: 0108178
2022-04-26 11:30 ddzama Assigned To ddzama => bugmaster
2022-04-26 11:30 ddzama Status new => resolved
2022-04-26 11:30 ddzama Steps to Reproduce Updated
2022-04-26 16:47 kgv Assigned To bugmaster => kgv
2022-04-26 21:47 kgv Note Added: 0108200
2022-04-26 22:02 kgv Note Added: 0108201
2022-04-26 22:02 kgv Assigned To kgv => ddzama
2022-04-26 22:02 kgv Status resolved => assigned
2022-04-26 22:02 kgv Test case number => N/A
2022-04-26 22:03 kgv Note Edited: 0108201
2022-04-26 22:05 kgv Note Added: 0108202
2022-04-26 22:06 kgv Summary Configuratiuon, CMake - allow selecting C++ standard => Configuration, CMake - allow selecting C++ standard
2022-04-26 22:06 kgv Severity minor => feature
2022-04-26 22:06 kgv Product Version 7.7.0 =>
2022-05-04 15:12 ddzama Note Added: 0108304
2022-05-04 15:15 ddzama Note Edited: 0108304
2022-05-04 15:16 git Note Added: 0108305
2022-05-04 15:21 git Note Added: 0108308
2022-05-04 15:29 kgv Note Added: 0108309
2022-05-04 15:48 ddzama Note Added: 0108314
2022-05-05 15:02 git Note Added: 0108349
2022-05-06 12:51 ddzama Note Added: 0108365
2022-05-06 16:13 git Note Added: 0108379
2022-05-07 01:08 ddzama Note Added: 0108381
2022-05-13 00:28 kgv Note Added: 0108419
2022-05-18 11:07 kgv Note Added: 0108480
2022-05-20 05:41 ddzama Note Added: 0108504
2022-05-20 12:25 kgv Note Added: 0108509
2022-05-20 12:50 ddzama Note Added: 0108510
2022-05-20 12:51 ddzama Assigned To ddzama => bugmaster
2022-05-20 12:51 ddzama Status assigned => resolved
2022-05-20 12:51 ddzama Assigned To bugmaster => ddzama
2022-05-20 12:51 ddzama Status resolved => assigned
2022-05-20 12:53 ddzama Note Edited: 0108510
2022-05-20 12:58 ddzama Note Edited: 0108504
2022-05-25 07:35 git Note Added: 0108601
2022-05-25 07:41 ddzama Note Added: 0108603
2022-05-25 09:58 ddzama Assigned To ddzama => bugmaster
2022-05-25 09:58 ddzama Status assigned => resolved
2022-05-25 11:14 kgv Assigned To bugmaster => msv
2022-05-25 11:14 kgv Note Added: 0108604
2022-05-25 12:49 msv Note Added: 0108605
2022-05-25 12:51 msv Note Added: 0108606
2022-05-25 12:53 msv Note Added: 0108607
2022-05-25 12:53 msv Assigned To msv => ddzama
2022-05-25 12:53 msv Status resolved => assigned
2022-05-25 12:54 msv Note Edited: 0108605
2022-05-25 13:15 kgv Note Added: 0108609
2022-05-26 16:41 git Note Added: 0108630
2022-05-27 10:01 git Note Added: 0108639
2022-05-27 10:11 git Note Added: 0108640
2022-05-27 13:04 ddzama Note Added: 0108646
2022-05-27 13:04 ddzama Assigned To ddzama => bugmaster
2022-05-27 13:04 ddzama Status assigned => resolved
2022-05-27 13:31 msv Assigned To bugmaster => msv
2022-05-27 14:20 kgv Note Added: 0108653
2022-05-27 14:20 kgv Note Edited: 0108653
2022-05-27 14:39 msv Assigned To msv => ddzama
2022-05-27 14:39 msv Status resolved => assigned
2022-05-27 14:39 msv Note Added: 0108655
2022-05-30 00:16 git Note Added: 0108736
2022-05-30 00:18 git Note Added: 0108737
2022-06-02 13:24 git Note Added: 0108791
2022-06-03 04:39 ddzama Relationship added child of 0032957
2022-06-03 12:40 git Note Added: 0108821
2022-06-17 16:48 ddzama Relationship deleted child of 0032887
2022-06-20 13:36 ddzama Relationship added child of 0032887
2022-06-20 13:36 ddzama Relationship deleted child of 0032957
2022-06-21 11:40 git Note Added: 0109136
2022-06-24 07:07 ddzama Note Added: 0109211
2022-06-24 07:14 ddzama Assigned To ddzama => bugmaster
2022-06-24 07:14 ddzama Status assigned => resolved
2022-06-24 09:40 kgv Note Added: 0109217
2022-06-24 09:40 kgv Assigned To bugmaster => msv
2022-06-24 09:41 kgv Note Added: 0109218
2022-06-24 13:21 msv Assigned To msv => ddzama
2022-06-24 13:21 msv Status resolved => assigned
2022-08-17 10:40 git Note Added: 0110250
2022-08-18 12:47 git Note Added: 0110290
2022-08-18 12:49 git Note Added: 0110291
2022-08-18 12:57 git Note Added: 0110292
2022-08-18 13:00 ddzama Note Added: 0110293
2022-08-18 13:01 ddzama Assigned To ddzama => kgv
2022-08-18 13:01 ddzama Status assigned => resolved
2022-08-18 13:06 kgv Assigned To kgv => msv
2022-08-22 10:31 git Note Added: 0110334
2022-08-29 12:50 git Note Added: 0110399
2022-08-29 12:59 msv Note Added: 0110402
2022-08-29 12:59 msv Assigned To msv => ddzama
2022-08-29 12:59 msv Status resolved => assigned
2022-08-29 13:33 git Note Added: 0110406
2022-08-29 13:43 git Note Added: 0110407
2022-08-29 15:19 git Note Added: 0110413
2022-08-29 15:24 git Note Added: 0110414
2022-08-29 15:26 ddzama Assigned To ddzama => kgv
2022-08-29 15:26 ddzama Status assigned => resolved
2022-08-29 15:28 msv Assigned To kgv => bugmaster
2022-08-29 15:28 msv Status resolved => reviewed
2022-08-29 15:28 msv Note Added: 0110415
2022-08-31 10:30 ddzama Relationship added parent of 0032986
2022-08-31 10:43 ddzama Relationship added child of 0033117
2022-08-31 10:43 ddzama Relationship deleted parent of 0032986
2022-08-31 10:44 ddzama Relationship added child of 0032986
2022-08-31 17:04 git Note Added: 0110502
2022-09-01 13:32 msv Assigned To bugmaster => ddzama
2022-09-01 13:32 msv Status reviewed => assigned
2022-09-01 13:32 msv Note Added: 0110529
2022-09-05 09:41 git Note Added: 0110606
2022-09-05 10:48 ddzama Note Added: 0110617
2022-09-05 12:47 msv Note Added: 0110645
2022-09-06 16:02 ddzama Description Updated
2022-09-06 16:12 ddzama Description Updated
2022-09-06 16:15 git Note Added: 0110751
2022-09-06 16:18 ddzama Note Added: 0110752
2022-09-06 16:19 ddzama Assigned To ddzama => msv
2022-09-06 16:19 ddzama Status assigned => resolved
2022-09-06 18:44 msv Assigned To msv => bugmaster
2022-09-06 18:44 msv Status resolved => reviewed
2022-09-06 18:44 msv Note Added: 0110767
2022-09-11 13:57 smoskvin Status reviewed => tested
2022-09-11 13:57 smoskvin Note Added: 0110929
2022-09-11 14:40 smoskvin Changeset attached => occt master e92d322d
2022-09-11 14:40 ddzama Assigned To bugmaster => ddzama
2022-09-11 14:40 ddzama Status tested => verified
2022-09-11 14:40 ddzama Resolution open => fixed
2022-09-11 14:47 smoskvin Changeset attached => occt-products master e8a9460d
2022-09-11 14:51 git Note Added: 0110942
2022-09-11 14:51 git Note Added: 0110943