@@ -144,20 +144,39 @@ proc OCCDoc_GetRelPath {thePathFrom thePathTo} {
144144
145145# Returns OCCT version string from version.cmake (if available)
146146proc OCCDoc_DetectCasVersion {} {
147+ # Default version in case the file is not found or readable
147148 set occt_ver " 7.8.0"
148149 set occt_ver_add " "
149- set filename " [ OCCDoc_GetSourceDir] /../adm/cmake/version.cmake"
150- if { [file exists $filename ] } {
151- set fh [open $filename " r" ]
152- set fh_loaded [read $fh ]
153- close $fh
154- regexp {set\s+OCC_VERSION_MAJOR\s+([0-9]+)} $fh_loaded dummy major
155- regexp {set\s+OCC_VERSION_MINOR\s+([0-9]+)} $fh_loaded dummy minor
156- regexp {set\s+OCC_VERSION_MAINTENANCE\s+([0-9]+)} $fh_loaded dummy maint
157- regexp {set\s+OCC_VERSION_DEVELOPMENT\s+\"([^\"]+)\"} $fh_loaded dummy occt_ver_add
158- set occt_ver " $major .$minor .$maint "
159- if { " $occt_ver_add " != " " } { set occt_ver ${occt_ver} .$occt_ver_add }
150+
151+ # Construct path to version.cmake relative to script location
152+ set filename " [ file normalize [file dirname [info script] ]/cmake/version.cmake]"
153+
154+ if { [file exists $filename ] && [file readable $filename ] } {
155+ if {[catch {
156+ set fh [open $filename " r" ]
157+ set fh_loaded [read $fh ]
158+ close $fh
159+
160+ # Use more robust regular expressions
161+ regexp {OCC_VERSION_MAJOR\s+(\d+)} $fh_loaded -> major
162+ regexp {OCC_VERSION_MINOR\s+(\d+)} $fh_loaded -> minor
163+ regexp {OCC_VERSION_MAINTENANCE\s+(\d+)} $fh_loaded -> maint
164+ regexp {OCC_VERSION_DEVELOPMENT\s+\"([^\"]+)\"} $fh_loaded -> occt_ver_add
165+
166+ if {[info exists major] && [info exists minor] && [info exists maint]} {
167+ puts " Info: Open CASCADE Technology version $major .$minor .$maint "
168+ set occt_ver " $major .$minor .$maint "
169+ if { [info exists occt_ver_add] && $occt_ver_add != " " } {
170+ set occt_ver ${occt_ver} .$occt_ver_add
171+ }
172+ }
173+ } err]} {
174+ puts " Warning: Error reading version from $filename : $err "
175+ }
176+ } else {
177+ puts " Warning: Version file $filename not found or not readable"
160178 }
179+
161180 return $occt_ver
162181}
163182
0 commit comments