QtCreator supports CMake natively.
At the moment OCCT qmake configuration is out-of-date and better to clean.
In case if support of qmake will require for specific platform - can be returned.
But with requirement to be tested by test system Jenkins/GitLab or GH.
+++ /dev/null
-/*/*.pro
-/*/*/*.pro
-*.pro.user
-custom.pri
-custom.auto.pri
+++ /dev/null
-# This is project defines C++ compilation rules for building an OCCT Toolkit.
-
-exists(custom.auto.pri) { include(custom.auto.pri) }
-exists(custom.pri) { include(custom.pri) }
-
-# Disable some dummy Qt defaults
-QT -= core gui
-CONFIG -= qt app_bundle
-CONFIG -= qml_debug
-CONFIG -= debug_and_release
-
-OccGitRoot = $$_PRO_FILE_PWD_/../../../..
-
-# Define compilation flags
-CONFIG += warn_on
-QMAKE_CFLAGS_WARN_ON = -Wall -Wextra
-QMAKE_CXXFLAGS_WARN_ON = -Wall -Wextra
-win32 {
- QMAKE_CFLAGS_WARN_ON = -W4
- QMAKE_CXXFLAGS_WARN_ON = -W4
- QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
- QMAKE_CXXFLAGS_STL_ON = /EHa
-
- QMAKE_CXXFLAGS += -fp:precise
- #QMAKE_CXXFLAGS -= -Zc:throwingNew
- #QMAKE_CXXFLAGS -= -Zc:rvalueCast
-
- QMAKE_LFLAGS += -INCREMENTAL:NO
-
- CONFIG(debug, debug|release) {
- QMAKE_CXXFLAGS += -Od
- QMAKE_CXXFLAGS += -Ob1
- }
-
- DEFINES -= WIN32
- DEFINES -= WIN64
- DEFINES += _CRT_SECURE_NO_WARNINGS
- DEFINES += _CRT_NONSTDC_NO_DEPRECATE
- DEFINES += _SCL_SECURE_NO_WARNINGS
-} else {
- CONFIG += c++11
- clang {
- QMAKE_CFLAGS_WARN_ON += -Wshorten-64-to-32
- QMAKE_CXXFLAGS_WARN_ON += -Wshorten-64-to-32
- }
- QMAKE_CFLAGS += -fexceptions
- QMAKE_CXXFLAGS += -fexceptions
- QMAKE_CXXFLAGS += -fvisibility=default
- DEFINES += OCC_CONVERT_SIGNALS
- mac {
- iphoneos {
- QMAKE_IOS_DEPLOYMENT_TARGET = 8.0
- } else {
- QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.14
- }
- } else:gcc {
- # ask linker to report missing library dependencies
- QMAKE_LFLAGS += -Wl,-z,defs
- }
-}
-!CONFIG(debug, debug|release) {
- # disable exceptions in Release builds
- DEFINES += No_Exception
- HAVE_RelWithDebInfo {
- win32 {
- CONFIG += force_debug_info
- }
- }
-}
-
-# Define output folder depending on compiler name
-MY_BITNESS = 32
-
-equals(QMAKE_TARGET.arch, x86_64) | equals(QMAKE_HOST.arch, x86_64) { MY_BITNESS = 64 }
-equals(ANDROID_TARGET_ARCH, arm64-v8a) { MY_BITNESS = 64 }
-has64Target = $$find(QMAKE_TARGET.arch, "x64")
-count(has64Target, 1) { MY_BITNESS = 64 }
-
-MY_PLATFORM = platform
-CONFIG(iphonesimulator, iphoneos|iphonesimulator) { MY_PLATFORM = iphonesimulator
-} else:CONFIG(iphoneos, iphoneos|iphonesimulator) { MY_PLATFORM = iphoneos
-} else:android { MY_PLATFORM = android-$$ANDROID_TARGET_ARCH
-} else:win32 { MY_PLATFORM = win$$MY_BITNESS
-} else:mac { MY_PLATFORM = mac
-} else:linux { MY_PLATFORM = lin
-} else:unix { MY_PLATFORM = unix
-} else { warning (Unknown platform. "$$MY_PLATFORM" is used) }
-
-MY_COMPILER = compiler
-MY_VC_VER = 0
-android-g++ {
- MY_COMPILER = gcc
-} else:clang {
- MY_COMPILER = clang
-} else:gcc {
- MY_COMPILER = gcc
-} else:win32-msvc2010 {
- MY_COMPILER = vc10
- MY_VC_VER = 10
-} else:win32-msvc2012 {
- MY_COMPILER = vc11
- MY_VC_VER = 11
-} else:win32-msvc2013 {
- MY_COMPILER = vc12
- MY_VC_VER = 12
-} else:win32-msvc2015 {
- MY_COMPILER = vc14
- MY_VC_VER = 14
-} else:win32-msvc2017 {
- MY_COMPILER = vc14
- MY_VC_VER = 14
-} else:win32-msvc {
- MY_COMPILER = vc14
- MY_VC_VER = 14
- aMsvcVer = $$(VisualStudioVersion)
- equals(aMsvcVer, 14.0){
- # VS2015, vc140
- } else:equals(aMsvcVer, 15.0){
- # VS2015, vc141
- } else:equals(aMsvcVer, 16.0){
- # VS2019, vc142
- } else:equals(aMsvcVer, 17.0){
- # VS2022, vc143
- } else {
- warning (Unknown msvc version. "$$MY_COMPILER" is used)
- }
-} else {
- warning (Unknown compiler. "$$MY_COMPILER" is used)
-}
-MY_PLATFORM_AND_COMPILER = $$MY_PLATFORM/$$MY_COMPILER
-#warning (The platform is "$$MY_PLATFORM"; bitness is "$$MY_BITNESS"; compiler is "$$MY_COMPILER")
-
-CONFIG(debug, debug|release) { MY_BUILDTYPE = d }
-
-DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/lib$${MY_BUILDTYPE}
-win32 {
- DESTDIR = $$OccGitRoot/win$${MY_BITNESS}/vc$${MY_VC_VER}/bin$${MY_BUILDTYPE}
- aLibDest = $$DESTDIR/../lib$${MY_BUILDTYPE}
- #DLLDESTDIR = $$DESTDIR/../bin$${MY_BUILDTYPE}
-
- # dummy target creating lib/libd folder
- occtkgen_libfolder.input = $$_PRO_FILE_PWD_/../../OcctDummy.in
- occtkgen_libfolder.output = $$aLibDest/dummy.tmp
- occtkgen_libfolder.config = verbatim
- QMAKE_SUBSTITUTES += occtkgen_libfolder
-
- LIBS += -L$$aLibDest
- equals(TEMPLATE, lib) {
- QMAKE_CLEAN += $$DESTDIR/$${TARGET}.dll
- QMAKE_CLEAN += $$aLibDest/$${TARGET}.lib
- QMAKE_CLEAN += $$aLibDest/$${TARGET}.exp
- } else {
- QMAKE_CLEAN += $$DESTDIR/$${TARGET}.exe
- }
- QMAKE_CLEAN += $$DESTDIR/$${TARGET}.pdb
- QMAKE_LFLAGS += -PDB:"$$DESTDIR/$${TARGET}.pdb"
- QMAKE_LFLAGS += -IMPLIB:"$$aLibDest/$${TARGET}.lib"
-} else {
- LIBS += -L$$DESTDIR
- equals(TEMPLATE, app) {
- DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/bin$${MY_BUILDTYPE}
- }
-}
-
-OBJECTS_DIR = $$DESTDIR/../obj$${MY_BUILDTYPE}/$${TARGET}
+++ /dev/null
-# This is a project template file defining an OCCT Module.
-# This project should be included with predefined OCC_MODULE_NAME variable.
-TEMPLATE = subdirs
-exists(custom.auto.pri) { include(custom.auto.pri) }
-exists(custom.pri) { include(custom.pri) }
-
-# Iterate over Toolkits within current Module and generate sub-project per Toolkit
-aModuleList = $$cat(../MODULES, lines)
-for (aModuleIter, aModuleList) {
- #aTkList = $$list($$aModuleIter) - this doesn't work, qmake bug?
- aModule = $$first($$list($$aModuleIter))
- equals (aModule, $$OCC_MODULE_NAME) {
- for (aToolKit, $$list($$aModuleIter)) {
- toSkipToolkit = 0
- equals (aToolKit, $$OCC_MODULE_NAME) { toSkipToolkit = 1 }
- !HAVE_VTK:equals (aToolKit, "TKIVtk") { toSkipToolkit = 1 }
- !HAVE_VTK:equals (aToolKit, "TKIVtkDraw") { toSkipToolkit = 1 }
- #!HAVE_OPENGL: equals (aToolKit, "TKOpenGl") { toSkipToolkit = 1 }
- #!HAVE_OPENGL: equals (aToolKit, "TKOpenGlTest") { toSkipToolkit = 1 }
- !HAVE_GLES2: equals (aToolKit, "TKOpenGles") { toSkipToolkit = 1 }
- !HAVE_GLES2: equals (aToolKit, "TKOpenGlesTest") { toSkipToolkit = 1 }
- !win32: equals (aToolKit, "TKD3DHost") { toSkipToolkit = 1 }
- !win32: equals (aToolKit, "TKD3DHostTest") { toSkipToolkit = 1 }
- equals (toSkipToolkit, 0) {
-
- #warning(aToolKit($$OCC_MODULE_NAME)=$$aToolKit)
- eval(occtkgen_$${aToolKit}.input = $$_PRO_FILE_PWD_/../OccToolkit.pro.in)
- eval(occtkgen_$${aToolKit}.output = $$_PRO_FILE_PWD_/$${aToolKit}/$${aToolKit}.pro)
- eval(occtkgen_$${aToolKit}.config = verbatim)
- eval(QMAKE_SUBSTITUTES += occtkgen_$${aToolKit})
- SUBDIRS += $${aToolKit}
-
- aModExtList = $$cat(../../src/$${aToolKit}/EXTERNLIB, lines)
- aTkDepends = $${aToolKit}.depends
- for (aModExtIter, aModExtList) {
- contains ($$list($$aModuleIter), $$aModExtIter) { eval ($${aTkDepends} += $$aModExtIter) }
- }
- #warning($$aToolKit depends on: $$reverse($${aTkDepends}))
- }
- }
- }
-}
+++ /dev/null
-OCC_MODULE_NAME = \$\$TARGET
-include(../OccModule.pri)
+++ /dev/null
-# This is a project template file defining an OCCT Toolkit.
-# This project should be included with predefined OCC_TOOLKIT_NAME variable.
-
-TEMPLATE = lib
-!exists(../../src/$$OCC_TOOLKIT_NAME/PACKAGES) {
- TEMPLATE = app
- CONFIG += console
-}
-win32 {
- # do not append version to DLL name
- CONFIG += skip_target_version_ext
-}
-
-include(OccCppConfig.pri)
-
-aSrcRoot = $$OccGitRoot/src
-aHxxRoot = $$OccGitRoot/inc
-INCLUDEPATH += $$aHxxRoot
-
-# CSF variables
-HAVE_FREETYPE { CSF_FREETYPE = -lfreetype }
-CSF_TclLibs = -ltcl8.6
-CSF_TclTkLibs = -ltk8.6
-HAVE_FREEIMAGE { CSF_FreeImagePlus = -lfreeimage } else:win32 { CSF_FreeImagePlus = -lwindowscodecs -lole32 }
-HAVE_FFMPEG { CSF_FFmpeg = -lavcodec -lavformat -lswscale -lavutil }
-HAVE_TBB { CSF_TBB = -ltbb -ltbbmalloc }
-HAVE_ZLIB { CSF_ZLIB = -lzlib }
-HAVE_LIBLZMA { CSF_LIBLZMA = -lliblzma }
-HAVE_DRACO { CSF_Draco = -ldraco }
-win32 {
- CSF_kernel32 = -lkernel32
- CSF_advapi32 = -ladvapi32
- CSF_gdi32 = -lgdi32
- CSF_user32 = -luser32 -lcomdlg32
- CSF_shell32 = -lShell32
- CSF_opengl32 = -lopengl32
- CSF_wsock32 = -lwsock32
- CSF_netapi32 = -lnetapi32
- CSF_OpenGlLibs = -lopengl32
- CSF_OpenGlesLibs = -llibEGL -llibGLESv2
- CSF_psapi = -lPsapi
- CSF_winmm = -lwinmm
- CSF_d3d9 = -ld3d9
- CSF_TclLibs = -ltcl86
- CSF_TclTkLibs = -ltk86
- CSF_TBB =
-} else:mac {
- CSF_dl = -ldl
- CSF_objc = -lobjc
- CSF_OpenGlLibs = -framework OpenGL
- CSF_OpenGlesLibs = -framework OpenGLES
- iphoneos {
- CSF_Appkit = -framework UIKit
- } else {
- CSF_Appkit = -framework AppKit
- }
- CSF_IOKit = -framework IOKit
- CSF_TclLibs = -framework Tcl
- CSF_TclTkLibs = -framework Tk
-} else {
- CSF_dl = -ldl
- CSF_ThreadLibs = -lpthread -lrt
- CSF_OpenGlesLibs = -lEGL -lGLESv2
- CSF_TclTkLibs = -ltk8.6
- HAVE_XLIB {
- CSF_OpenGlLibs = -lGL
- CSF_XwLibs = -lX11
- } else {
- CSF_OpenGlLibs = -lGL -lEGL
- }
- HAVE_FREETYPE { CSF_fontconfig = -lfontconfig }
-}
-
-for (aCfgIter, CONFIG) {
- aRes = $$find(aCfgIter, "^HAVE_")
- !equals(aCfgIter, "HAVE_GLES2") {
- count(aRes, 1) {
- DEFINES += $$aCfgIter
- }
- }
-}
-
-# Define the list of standard OCCT file extensions
-aHxxRegex = ^.*\.(hxx|h|lxx)$
-aCxxRegex = ^.*\.(cxx|cpp|c)$
-mac { aCxxRegex = ^.*\.(cxx|cpp|c|m|mm)$ }
-
-# Auxiliary function for probing file extension
-defineTest (occCheckExtension) {
- aProbe = $$find(1, "$$2")
- count(aProbe, 1) { return(true) } else { return(false) }
-}
-
-# Auxiliary function for probing compilable files
-defineTest (occIsCxxFile) { occCheckExtension ($$1, $$aCxxRegex) { return(true) } else { return(false) } }
-
-# Auxiliary function for probing header files
-defineTest (occIsHxxFile) { occCheckExtension ($$1, $$aHxxRegex) { return(true) } else { return(false) } }
-
-aTkFiles = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/FILES, lines)
-aTkFiles += CMakeLists.txt
-aPackages = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/PACKAGES, lines)
-anExternLibs = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/EXTERNLIB, lines)
-
-for (aTkFileIter, aTkFiles) { OTHER_FILES += $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aTkFileIter }
-for (anExternLib, anExternLibs) {
- hasCsf = $$find(anExternLib, CSF_)
- count(hasCsf, 1) {
- aList = $$split($$anExternLib, "\n")
- LIBS += $$aList
- equals(anExternLib, "CSF_OpenGlLibs") {
- DEFINES += "HAVE_OPENGL"
- }
- equals(anExternLib, "CSF_OpenGlesLibs") {
- DEFINES += "HAVE_GLES2"
- }
- } else {
- LIBS += -l$$anExternLib
- }
-}
-
-# Iterate over Packages and add compilable files into this project
-isEmpty (aPackages) { aPackages = $$OCC_TOOLKIT_NAME }
-for (aPackage, aPackages) {
- aPackageFolder = $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aPackage
- aPackageFiles = $$cat($$aSrcRoot/$$aPackage/FILES, lines)
- for (aFileIter, aPackageFiles) {
- occIsCxxFile($$aFileIter) {
- SOURCES += $$aSrcRoot/$$aPackage/$$aFileIter
- }
- }
-}
-
-!win32 {
- aVerList = $$split(VERSION, ".")
- aVerMaj = $$member(aVerList, 0)
- aVerMin = $$member(aVerList, 1)
- aVerMic = $$member(aVerList, 2)
-
- equals(TEMPLATE, app) {
- QMAKE_CLEAN += $$DESTDIR/$${TARGET}
- } else {
- mac {
- # override qmake soname versionong logic
- QMAKE_LFLAGS_SONAME =
- QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.dylib.$${aVerMaj}.$${aVerMin}
-
- # extend clean with versioned .dylib files
- QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.dylib
- QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.dylib
- QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.dylib
- QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.$${aVerMic}.dylib
- } else {
- # override qmake soname versionong logic
- QMAKE_LFLAGS_SONAME =
- QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}
-
- # extend clean with versioned .so files
- QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so
- QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}
- QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}
- QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}.$${aVerMic}
- }
- }
-}
+++ /dev/null
-OCC_TOOLKIT_NAME = \$\$TARGET
-include(../../OccToolkit.pri)
+++ /dev/null
-# This is an experimental Solution project for building entire OCCT framework using qmake.
-# It can be also used for just source code navigation in Qt Creator without actually building OCCT.
-# Note, as this is an experimental project, compiler flags might differ from official builds - use it on your own risk!
-# Building OCCT using CMake is a preferred solution.
-#
-# This project GENERATES sub-projects (OCCT modules) dynamically, so to start using it:
-# - Launch genconf, select Project Format "Qt Project" and configure dependencies; this will also generate "custom.auto.pri".
-# - Launch genproj to fill in "inc" folder with links to header files.
-# - Open project in Qt Creator, and call "Run qmake".
-# - Close the project in Qt Creator, open it again so that you should see the sub-modules in Project tree; call "Run qmake" again.
-# - "Run qmake" and perform Build.
-#
-# Within Debian-based Linux repository Qt Creator can be installed like this:
-# > sudo apt-get install qtcreator qtbase5-dev
-
-TEMPLATE = subdirs
-exists(custom.auto.pri) { include(custom.auto.pri) }
-exists(custom.pri) { include(custom.pri) }
-
-OTHER_FILES += OccModule.pro.in \
- OcctHeaderLink.hxx.in \
- OccToolkit.pro.in \
- OccCppConfig.pri \
- OccModule.pri \
- OccToolkit.pri \
- custom.pri.template
-
-# Iterate over Modules and generate sub-projects
-aSolModuleList = $$cat(../MODULES, lines)
-for (aSolModuleIter, aSolModuleList) {
- aSolModule = $$first($$list($$aSolModuleIter))
- eval(occtkgen_$${aSolModule}.input = $$_PRO_FILE_PWD_/OccModule.pro.in)
- eval(occtkgen_$${aSolModule}.output = $$_PRO_FILE_PWD_/$${aSolModule}/$${aSolModule}.pro)
- eval(occtkgen_$${aSolModule}.config = verbatim)
- eval(QMAKE_SUBSTITUTES += occtkgen_$${aSolModule})
- SUBDIRS += $${aSolModule}
-}
-
-# These dependencies are manually defined
-ModelingData.depends = FoundationClasses
-ModelingAlgorithms.depends = FoundationClasses ModelingData
-Visualization.depends = FoundationClasses ModelingData ModelingAlgorithms
-ApplicationFramework.depends = FoundationClasses ModelingData ModelingAlgorithms Visualization
-DataExchange.depends = FoundationClasses ModelingData ModelingAlgorithms ApplicationFramework
-Draw.depends = FoundationClasses ModelingData ModelingAlgorithms ApplicationFramework DataExchange Visualization
+++ /dev/null
-#include \"../src/$${OCCT_PACKAGE}/$${OCCT_HEADER}\"
+++ /dev/null
-PRODUCTS_PATH = c:/3rdparty/vc14
-
-#CONFIG += HAVE_FREEIMAGE
-#CONFIG += HAVE_FFMPEG
-#CONFIG += HAVE_TBB
-#CONFIG += HAVE_GLES2
-#CONFIG += HAVE_D3D
-#CONFIG += HAVE_VTK
-
-aFreeType = $$PRODUCTS_PATH/freetype-2.5.5-vc14-64
-aTclTk = $$PRODUCTS_PATH/tcltk-86-64
-
-INCLUDEPATH += $$aFreeType/include
-LIBS += -L$$aFreeType/lib
-
-INCLUDEPATH += $$aTclTk/include
-LIBS += -L$$aTclTk/lib
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorCodeStyle>
-<!-- Written by QtCreator 3.6.1, 2016-05-19T14:46:43. -->
-<qtcreator>
- <data>
- <variable>CodeStyleData</variable>
- <valuemap type="QVariantMap">
- <value type="bool" key="AlignAssignments">true</value>
- <value type="bool" key="AutoSpacesForTabs">false</value>
- <value type="bool" key="BindStarToIdentifier">false</value>
- <value type="bool" key="BindStarToLeftSpecifier">true</value>
- <value type="bool" key="BindStarToRightSpecifier">false</value>
- <value type="bool" key="BindStarToTypeName">true</value>
- <value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
- <value type="bool" key="IndentAccessSpecifiers">false</value>
- <value type="bool" key="IndentBlockBody">true</value>
- <value type="bool" key="IndentBlockBraces">false</value>
- <value type="bool" key="IndentBlocksRelativeToSwitchLabels">true</value>
- <value type="bool" key="IndentClassBraces">false</value>
- <value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
- <value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
- <value type="bool" key="IndentEnumBraces">false</value>
- <value type="bool" key="IndentFunctionBody">true</value>
- <value type="bool" key="IndentFunctionBraces">false</value>
- <value type="bool" key="IndentNamespaceBody">true</value>
- <value type="bool" key="IndentNamespaceBraces">false</value>
- <value type="int" key="IndentSize">2</value>
- <value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
- <value type="bool" key="IndentSwitchLabels">true</value>
- <value type="int" key="PaddingMode">2</value>
- <value type="bool" key="SpacesForTabs">true</value>
- <value type="int" key="TabSize">2</value>
- </valuemap>
- </data>
- <data>
- <variable>DisplayName</variable>
- <value type="QString">occt</value>
- </data>
-</qtcreator>