0030636: Configuration, qmake - unable to build using VS2017
[occt.git] / adm / qmake / OccCppConfig.pri
1 # This is project defines C++ compilation rules for building an OCCT Toolkit.
2
3 exists(custom.auto.pri) { include(custom.auto.pri) }
4 exists(custom.pri)      { include(custom.pri) }
5
6 # Disable some dummy Qt defaults
7 QT -= core gui
8 CONFIG -= qt app_bundle
9 CONFIG -= qml_debug
10 CONFIG -= debug_and_release
11
12 OccGitRoot = $$_PRO_FILE_PWD_/../../../..
13
14 # Define compilation flags
15 !win32 { DEFINES += OCC_CONVERT_SIGNALS }
16 android {
17   CONFIG += warn_off
18   QMAKE_CFLAGS   += -fexceptions -Wno-ignored-qualifiers -Wall
19   QMAKE_CXXFLAGS += -fexceptions -Wno-ignored-qualifiers -Wall
20   #android-g++ { QMAKE_CXXFLAGS += -Wno-strict-overflow }
21 } else:win32 {
22   QMAKE_CXXFLAGS_WARN_ON = -W4
23   QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
24   QMAKE_CXXFLAGS_STL_ON = /EHa
25
26   QMAKE_CXXFLAGS += -fp:precise
27   #QMAKE_CXXFLAGS -= -Zc:throwingNew
28   #QMAKE_CXXFLAGS -= -Zc:rvalueCast
29
30   QMAKE_LFLAGS += -INCREMENTAL:NO
31
32   CONFIG(debug, debug|release) {
33     QMAKE_CXXFLAGS += -Od
34     QMAKE_CXXFLAGS += -Ob1
35   }
36
37   DEFINES -= WIN32
38   DEFINES -= WIN64
39   DEFINES += _CRT_SECURE_NO_WARNINGS
40   DEFINES += _CRT_NONSTDC_NO_DEPRECATE
41   DEFINES += _SCL_SECURE_NO_WARNINGS
42 } else:mac {
43   CONFIG += c++11
44   CONFIG += warn_off
45   QMAKE_CXXFLAGS += -Wall
46   QMAKE_CXXFLAGS += -fvisibility=default
47   iphoneos {
48     QMAKE_IOS_DEPLOYMENT_TARGET = 8.0
49   } else {
50     QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.10
51   }
52 }
53
54 # Define output folder depending on compiler name
55 MY_BITNESS = 32
56
57 equals(QMAKE_TARGET.arch, x86_64) | equals(QMAKE_HOST.arch, x86_64) { MY_BITNESS = 64 }
58 equals(ANDROID_TARGET_ARCH, arm64-v8a) { MY_BITNESS = 64 }
59 has64Target = $$find(QMAKE_TARGET.arch, "x64")
60 count(has64Target, 1) { MY_BITNESS = 64 }
61
62 MY_PLATFORM = platform
63 CONFIG(iphonesimulator, iphoneos|iphonesimulator) { MY_PLATFORM = iphonesimulator
64 } else:CONFIG(iphoneos, iphoneos|iphonesimulator) { MY_PLATFORM = iphoneos
65 } else:android { MY_PLATFORM = android-$$ANDROID_TARGET_ARCH
66 } else:win32   { MY_PLATFORM = win$$MY_BITNESS
67 } else:mac     { MY_PLATFORM = mac
68 } else:linux   { MY_PLATFORM = lin
69 } else:unix    { MY_PLATFORM = unix
70 } else { warning (Unknown platform. "$$MY_PLATFORM" is used) }
71
72 MY_COMPILER = compiler
73 MY_VC_VER = 0
74 android-g++ {
75   MY_COMPILER = gcc
76 } else:clang {
77   MY_COMPILER = clang
78 } else:gcc {
79   MY_COMPILER = gcc
80 } else:win32-msvc2010 {
81   MY_COMPILER = vc10
82   MY_VC_VER = 10
83 } else:win32-msvc2012 {
84   MY_COMPILER = vc11
85   MY_VC_VER = 11
86 } else:win32-msvc2013 {
87   MY_COMPILER = vc12
88   MY_VC_VER = 12
89 } else:win32-msvc2015 {
90   MY_COMPILER = vc14
91   MY_VC_VER = 14
92 } else:win32-msvc2017 {
93   MY_COMPILER = vc14
94   MY_VC_VER = 14
95 } else:win32-msvc {
96   MY_COMPILER = vc14
97   MY_VC_VER = 14
98   aMsvcVer = $$(VisualStudioVersion)
99   equals(aMsvcVer, 14.0){
100     # VS2015, vc140
101   } else:equals(aMsvcVer, 15.0){
102     # VS2015, vc141
103   } else:equals(aMsvcVer, 16.0){
104     # VS2019, vc142
105   } else {
106     warning (Unknown msvc version. "$$MY_COMPILER" is used)
107   }
108 } else {
109   warning (Unknown compiler. "$$MY_COMPILER" is used)
110 }
111 MY_PLATFORM_AND_COMPILER = $$MY_PLATFORM/$$MY_COMPILER
112 #warning (The platform is "$$MY_PLATFORM"; bitness is "$$MY_BITNESS"; compiler is "$$MY_COMPILER")
113
114 CONFIG(debug, debug|release) { MY_BUILDTYPE = d }
115
116 DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/lib$${MY_BUILDTYPE}
117 win32 {
118   DESTDIR  = $$OccGitRoot/win$${MY_BITNESS}/vc$${MY_VC_VER}/bin$${MY_BUILDTYPE}
119   aLibDest = $$DESTDIR/../lib$${MY_BUILDTYPE}
120   #DLLDESTDIR = $$DESTDIR/../bin$${MY_BUILDTYPE}
121
122   # dummy target creating lib/libd folder
123   occtkgen_libfolder.input  = $$_PRO_FILE_PWD_/../../OcctDummy.in
124   occtkgen_libfolder.output = $$aLibDest/dummy.tmp
125   occtkgen_libfolder.config = verbatim
126   QMAKE_SUBSTITUTES += occtkgen_libfolder
127
128   LIBS += -L$$aLibDest
129   HAVE_RelWithDebInfo {
130     !CONFIG(debug, debug|release) { CONFIG += force_debug_info }
131   }
132   equals(TEMPLATE, lib) {
133     QMAKE_CLEAN += $$DESTDIR/$${TARGET}.dll
134     QMAKE_CLEAN += $$aLibDest/$${TARGET}.lib
135     QMAKE_CLEAN += $$aLibDest/$${TARGET}.exp
136   } else {
137     QMAKE_CLEAN += $$DESTDIR/$${TARGET}.exe
138   }
139   QMAKE_CLEAN += $$DESTDIR/$${TARGET}.pdb
140   QMAKE_LFLAGS += -PDB:"$$DESTDIR/$${TARGET}.pdb"
141   QMAKE_LFLAGS += -IMPLIB:"$$aLibDest/$${TARGET}.lib"
142 } else {
143   LIBS += -L$$DESTDIR
144   equals(TEMPLATE, app) {
145     DESTDIR = $$OccGitRoot/$${MY_PLATFORM_AND_COMPILER}/bin$${MY_BUILDTYPE}
146   }
147 }
148
149 #OBJECTS_DIR = $$DESTDIR/../obj$${MY_BUILDTYPE}/$${TARGET}
150 OBJECTS_DIR = $$DESTDIR/../obj$${MY_BUILDTYPE}