1 # This is project defines C++ compilation rules for building an OCCT Toolkit.
3 exists(custom.auto.pri) { include(custom.auto.pri) }
4 exists(custom.pri) { include(custom.pri) }
6 # Disable some dummy Qt defaults
8 CONFIG -= qt app_bundle
10 CONFIG -= debug_and_release
12 OccGitRoot = $$_PRO_FILE_PWD_/../../../..
14 # Define compilation flags
16 QMAKE_CFLAGS_WARN_ON = -Wall -Wextra
17 QMAKE_CXXFLAGS_WARN_ON = -Wall -Wextra
19 QMAKE_CFLAGS_WARN_ON = -W4
20 QMAKE_CXXFLAGS_WARN_ON = -W4
21 QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
22 QMAKE_CXXFLAGS_STL_ON = /EHa
24 QMAKE_CXXFLAGS += -fp:precise
25 #QMAKE_CXXFLAGS -= -Zc:throwingNew
26 #QMAKE_CXXFLAGS -= -Zc:rvalueCast
28 QMAKE_LFLAGS += -INCREMENTAL:NO
30 CONFIG(debug, debug|release) {
32 QMAKE_CXXFLAGS += -Ob1
37 DEFINES += _CRT_SECURE_NO_WARNINGS
38 DEFINES += _CRT_NONSTDC_NO_DEPRECATE
39 DEFINES += _SCL_SECURE_NO_WARNINGS
42 QMAKE_CFLAGS += -fexceptions
43 QMAKE_CXXFLAGS += -fexceptions
44 QMAKE_CXXFLAGS += -fvisibility=default
45 DEFINES += OCC_CONVERT_SIGNALS
47 QMAKE_LFLAGS += -Wl,-z,defs
51 QMAKE_IOS_DEPLOYMENT_TARGET = 8.0
53 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.14
57 !CONFIG(debug, debug|release) {
58 # disable exceptions in Release builds
59 DEFINES += No_Exception
62 CONFIG += force_debug_info
67 # Define output folder depending on compiler name
70 equals(QMAKE_TARGET.arch, x86_64) | equals(QMAKE_HOST.arch, x86_64) { MY_BITNESS = 64 }
71 equals(ANDROID_TARGET_ARCH, arm64-v8a) { MY_BITNESS = 64 }
72 has64Target = $$find(QMAKE_TARGET.arch, "x64")
73 count(has64Target, 1) { MY_BITNESS = 64 }
75 MY_PLATFORM = platform
76 CONFIG(iphonesimulator, iphoneos|iphonesimulator) { MY_PLATFORM = iphonesimulator
77 } else:CONFIG(iphoneos, iphoneos|iphonesimulator) { MY_PLATFORM = iphoneos
78 } else:android { MY_PLATFORM = android-$$ANDROID_TARGET_ARCH
79 } else:win32 { MY_PLATFORM = win$$MY_BITNESS
80 } else:mac { MY_PLATFORM = mac
81 } else:linux { MY_PLATFORM = lin
82 } else:unix { MY_PLATFORM = unix
83 } else { warning (Unknown platform. "$$MY_PLATFORM" is used) }
85 MY_COMPILER = compiler
93 } else:win32-msvc2010 {
96 } else:win32-msvc2012 {
99 } else:win32-msvc2013 {
102 } else:win32-msvc2015 {
105 } else:win32-msvc2017 {
111 aMsvcVer = $$(VisualStudioVersion)
112 equals(aMsvcVer, 14.0){
114 } else:equals(aMsvcVer, 15.0){
116 } else:equals(aMsvcVer, 16.0){
119 warning (Unknown msvc version. "$$MY_COMPILER" is used)
122 warning (Unknown compiler. "$$MY_COMPILER" is used)
124 MY_PLATFORM_AND_COMPILER = $$MY_PLATFORM/$$MY_COMPILER
125 #warning (The platform is "$$MY_PLATFORM"; bitness is "$$MY_BITNESS"; compiler is "$$MY_COMPILER")
127 CONFIG(debug, debug|release) { MY_BUILDTYPE = d }
129 DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/lib$${MY_BUILDTYPE}
131 DESTDIR = $$OccGitRoot/win$${MY_BITNESS}/vc$${MY_VC_VER}/bin$${MY_BUILDTYPE}
132 aLibDest = $$DESTDIR/../lib$${MY_BUILDTYPE}
133 #DLLDESTDIR = $$DESTDIR/../bin$${MY_BUILDTYPE}
135 # dummy target creating lib/libd folder
136 occtkgen_libfolder.input = $$_PRO_FILE_PWD_/../../OcctDummy.in
137 occtkgen_libfolder.output = $$aLibDest/dummy.tmp
138 occtkgen_libfolder.config = verbatim
139 QMAKE_SUBSTITUTES += occtkgen_libfolder
142 equals(TEMPLATE, lib) {
143 QMAKE_CLEAN += $$DESTDIR/$${TARGET}.dll
144 QMAKE_CLEAN += $$aLibDest/$${TARGET}.lib
145 QMAKE_CLEAN += $$aLibDest/$${TARGET}.exp
147 QMAKE_CLEAN += $$DESTDIR/$${TARGET}.exe
149 QMAKE_CLEAN += $$DESTDIR/$${TARGET}.pdb
150 QMAKE_LFLAGS += -PDB:"$$DESTDIR/$${TARGET}.pdb"
151 QMAKE_LFLAGS += -IMPLIB:"$$aLibDest/$${TARGET}.lib"
154 equals(TEMPLATE, app) {
155 DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/bin$${MY_BUILDTYPE}
159 OBJECTS_DIR = $$DESTDIR/../obj$${MY_BUILDTYPE}/$${TARGET}