Skip to content

Commit f2e0b4c

Browse files
authored
Support LLVM MinGW with CMake (#265)
1 parent 089ad75 commit f2e0b4c

File tree

5 files changed

+116
-16
lines changed

5 files changed

+116
-16
lines changed

3rdparty/wxWidgets_setup_h/wx/setup.h

+4
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,11 @@
813813
// Default is 0, set it to 1 if you don't want to depend on WebView2Loader.dll.
814814
//
815815
// Recommended setting: 0
816+
#if defined(__clang__)
817+
#define wxUSE_WEBVIEW_EDGE_STATIC 0
818+
#else
816819
#define wxUSE_WEBVIEW_EDGE_STATIC 1
820+
#endif // defined(__clang__)
817821

818822
// Use the WebKit wxWebView backend
819823
//

cmake/CMakeLists.txt

+7-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/common_res.o)
105105

106106
add_library(${PROJECT_NAME} SHARED ${SOURCES} $<TARGET_OBJECTS:wxWidgets> $<TARGET_OBJECTS:expat> $<TARGET_OBJECTS:crypto>)
107107

108-
target_link_libraries(${PROJECT_NAME} wininet version rpcrt4 comctl32 crypt32 wsock32 ws2_32 UxTheme Shlwapi)
108+
target_link_libraries(${PROJECT_NAME} wininet version rpcrt4 comctl32 crypt32 wsock32 ws2_32 uxtheme shlwapi "${WEBVIEW2_LOADER_LIB}")
109109

110110
set_target_properties(${PROJECT_NAME} PROPERTIES
111111
VERSION ${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_PATCH_VERSION}
@@ -135,3 +135,9 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
135135
DESTINATION "${CONFIG_INSTALL_DIR}")
136136

137137
install(EXPORT ${PROJECT_NAME}-export DESTINATION "${CONFIG_INSTALL_DIR}" FILE ${PROJECT_NAME}Targets.cmake)
138+
139+
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
140+
install(FILES ${WEBVIEW2_LOADER_LIB_DLL}
141+
DESTINATION "${LIB_INSTALL_DIR}")
142+
endif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
143+

cmake/wxWidgets/CMakeLists.txt

+92-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,27 @@ endif()
77

88
set(SOURCE_DIR ${ROOT_DIR}/3rdparty)
99

10-
set(INCLUDE_DIRS ${SOURCE_DIR}/wxWidgets_setup_h ${SOURCE_DIR}/wxWidgets/include)
11-
include_directories(${INCLUDE_DIRS})
10+
set(ARCHS_64BIT_INTEL "amd64" "x86_64")
11+
set(ARCHS_64BIT_ARM "arm64" "aarch64")
12+
set(ARCHS_32BIT_INTEL "x86" "i686")
13+
14+
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" _SYSTEM_PROCESSOR_LOWERED)
15+
16+
list(FIND ARCHS_64BIT_INTEL "${_SYSTEM_PROCESSOR_LOWERED}" _list_idx)
17+
if (${_list_idx} GREATER -1)
18+
set(WEBVIEW2_LOADER_ARCH "x64")
19+
endif (${_list_idx} GREATER -1)
20+
21+
list(FIND ARCHS_64BIT_ARM "${_SYSTEM_PROCESSOR_LOWERED}" _list_idx)
22+
if (${_list_idx} GREATER -1)
23+
set(WEBVIEW2_LOADER_ARCH "arm64")
24+
endif (${_list_idx} GREATER -1)
1225

26+
list(FIND ARCHS_32BIT_INTEL "${_SYSTEM_PROCESSOR_LOWERED}" _list_idx)
27+
if (${_list_idx} GREATER -1)
28+
set(WEBVIEW2_LOADER_ARCH "x86")
29+
endif (${_list_idx} GREATER -1)
30+
1331
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
1432

1533
add_definitions(
@@ -28,6 +46,7 @@ set(SOURCES
2846
${SOURCE_DIR}/wxWidgets/src/common/arrstr.cpp
2947
${SOURCE_DIR}/wxWidgets/src/common/artprov.cpp
3048
${SOURCE_DIR}/wxWidgets/src/common/bmpbase.cpp
49+
${SOURCE_DIR}/wxWidgets/src/common/bmpbndl.cpp
3150
${SOURCE_DIR}/wxWidgets/src/common/btncmn.cpp
3251
${SOURCE_DIR}/wxWidgets/src/common/checkboxcmn.cpp
3352
${SOURCE_DIR}/wxWidgets/src/common/clntdata.cpp
@@ -45,14 +64,16 @@ set(SOURCES
4564
${SOURCE_DIR}/wxWidgets/src/common/dlgcmn.cpp
4665
${SOURCE_DIR}/wxWidgets/src/common/dobjcmn.cpp
4766
${SOURCE_DIR}/wxWidgets/src/common/dpycmn.cpp
48-
${SOURCE_DIR}/wxWidgets/src/common/dynarray.cpp
4967
${SOURCE_DIR}/wxWidgets/src/common/dynlib.cpp
5068
${SOURCE_DIR}/wxWidgets/src/common/encconv.cpp
5169
${SOURCE_DIR}/wxWidgets/src/common/event.cpp
5270
${SOURCE_DIR}/wxWidgets/src/common/evtloopcmn.cpp
71+
${SOURCE_DIR}/wxWidgets/src/common/ffile.cpp
5372
${SOURCE_DIR}/wxWidgets/src/common/file.cpp
73+
${SOURCE_DIR}/wxWidgets/src/common/fileback.cpp
5474
${SOURCE_DIR}/wxWidgets/src/common/filefn.cpp
5575
${SOURCE_DIR}/wxWidgets/src/common/filename.cpp
76+
${SOURCE_DIR}/wxWidgets/src/common/filesys.cpp
5677
${SOURCE_DIR}/wxWidgets/src/common/fmapbase.cpp
5778
${SOURCE_DIR}/wxWidgets/src/common/fontcmn.cpp
5879
${SOURCE_DIR}/wxWidgets/src/common/fontmap.cpp
@@ -63,6 +84,7 @@ set(SOURCES
6384
${SOURCE_DIR}/wxWidgets/src/common/hash.cpp
6485
${SOURCE_DIR}/wxWidgets/src/common/hashmap.cpp
6586
${SOURCE_DIR}/wxWidgets/src/common/iconbndl.cpp
87+
${SOURCE_DIR}/wxWidgets/src/common/imagbmp.cpp
6688
${SOURCE_DIR}/wxWidgets/src/common/image.cpp
6789
${SOURCE_DIR}/wxWidgets/src/common/init.cpp
6890
${SOURCE_DIR}/wxWidgets/src/common/intl.cpp
@@ -72,6 +94,7 @@ set(SOURCES
7294
${SOURCE_DIR}/wxWidgets/src/common/list.cpp
7395
${SOURCE_DIR}/wxWidgets/src/common/longlong.cpp
7496
${SOURCE_DIR}/wxWidgets/src/common/matrix.cpp
97+
${SOURCE_DIR}/wxWidgets/src/common/mstream.cpp
7598
${SOURCE_DIR}/wxWidgets/src/common/menucmn.cpp
7699
${SOURCE_DIR}/wxWidgets/src/common/modalhook.cpp
77100
${SOURCE_DIR}/wxWidgets/src/common/module.cpp
@@ -84,6 +107,7 @@ set(SOURCES
84107
${SOURCE_DIR}/wxWidgets/src/common/platinfo.cpp
85108
${SOURCE_DIR}/wxWidgets/src/common/powercmn.cpp
86109
${SOURCE_DIR}/wxWidgets/src/common/process.cpp
110+
${SOURCE_DIR}/wxWidgets/src/common/quantize.cpp
87111
${SOURCE_DIR}/wxWidgets/src/common/rendcmn.cpp
88112
${SOURCE_DIR}/wxWidgets/src/common/rgncmn.cpp
89113
${SOURCE_DIR}/wxWidgets/src/common/settcmn.cpp
@@ -93,13 +117,15 @@ set(SOURCES
93117
${SOURCE_DIR}/wxWidgets/src/common/stdpbase.cpp
94118
${SOURCE_DIR}/wxWidgets/src/common/stockitem.cpp
95119
${SOURCE_DIR}/wxWidgets/src/common/strconv.cpp
120+
${SOURCE_DIR}/wxWidgets/src/common/stream.cpp
96121
${SOURCE_DIR}/wxWidgets/src/common/string.cpp
97122
${SOURCE_DIR}/wxWidgets/src/common/stringimpl.cpp
98123
${SOURCE_DIR}/wxWidgets/src/common/stringops.cpp
99124
${SOURCE_DIR}/wxWidgets/src/common/strvararg.cpp
100125
${SOURCE_DIR}/wxWidgets/src/common/sysopt.cpp
101126
${SOURCE_DIR}/wxWidgets/src/common/textbuf.cpp
102127
${SOURCE_DIR}/wxWidgets/src/common/textcmn.cpp
128+
${SOURCE_DIR}/wxWidgets/src/common/textentrycmn.cpp
103129
${SOURCE_DIR}/wxWidgets/src/common/textmeasurecmn.cpp
104130
${SOURCE_DIR}/wxWidgets/src/common/threadinfo.cpp
105131
${SOURCE_DIR}/wxWidgets/src/common/time.cpp
@@ -108,11 +134,17 @@ set(SOURCES
108134
${SOURCE_DIR}/wxWidgets/src/common/tokenzr.cpp
109135
${SOURCE_DIR}/wxWidgets/src/common/toplvcmn.cpp
110136
${SOURCE_DIR}/wxWidgets/src/common/translation.cpp
137+
${SOURCE_DIR}/wxWidgets/src/common/txtstrm.cpp
138+
${SOURCE_DIR}/wxWidgets/src/common/uilocale.cpp
111139
${SOURCE_DIR}/wxWidgets/src/common/unichar.cpp
112140
${SOURCE_DIR}/wxWidgets/src/common/uri.cpp
113141
${SOURCE_DIR}/wxWidgets/src/common/ustring.cpp
114142
${SOURCE_DIR}/wxWidgets/src/common/utilscmn.cpp
115143
${SOURCE_DIR}/wxWidgets/src/common/variant.cpp
144+
${SOURCE_DIR}/wxWidgets/src/common/webview.cpp
145+
${SOURCE_DIR}/wxWidgets/src/common/webviewfshandler.cpp
146+
${SOURCE_DIR}/wxWidgets/src/common/webviewarchivehandler.cpp
147+
${SOURCE_DIR}/wxWidgets/src/common/wfstream.cpp
116148
${SOURCE_DIR}/wxWidgets/src/common/wincmn.cpp
117149
${SOURCE_DIR}/wxWidgets/src/common/windowid.cpp
118150
${SOURCE_DIR}/wxWidgets/src/common/wrapsizer.cpp
@@ -130,6 +162,7 @@ set(SOURCES
130162
${SOURCE_DIR}/wxWidgets/src/msw/artmsw.cpp
131163
${SOURCE_DIR}/wxWidgets/src/msw/basemsw.cpp
132164
${SOURCE_DIR}/wxWidgets/src/msw/bitmap.cpp
165+
${SOURCE_DIR}/wxWidgets/src/msw/bmpbndl.cpp
133166
${SOURCE_DIR}/wxWidgets/src/msw/brush.cpp
134167
${SOURCE_DIR}/wxWidgets/src/msw/button.cpp
135168
${SOURCE_DIR}/wxWidgets/src/msw/checkbox.cpp
@@ -177,21 +210,75 @@ set(SOURCES
177210
${SOURCE_DIR}/wxWidgets/src/msw/statbmp.cpp
178211
${SOURCE_DIR}/wxWidgets/src/msw/stattext.cpp
179212
${SOURCE_DIR}/wxWidgets/src/msw/stdpaths.cpp
213+
${SOURCE_DIR}/wxWidgets/src/msw/textctrl.cpp
214+
${SOURCE_DIR}/wxWidgets/src/msw/textentry.cpp
180215
${SOURCE_DIR}/wxWidgets/src/msw/textmeasure.cpp
181216
${SOURCE_DIR}/wxWidgets/src/msw/thread.cpp
182217
${SOURCE_DIR}/wxWidgets/src/msw/timer.cpp
183218
${SOURCE_DIR}/wxWidgets/src/msw/toplevel.cpp
219+
${SOURCE_DIR}/wxWidgets/src/msw/uilocale.cpp
184220
${SOURCE_DIR}/wxWidgets/src/msw/utils.cpp
185221
${SOURCE_DIR}/wxWidgets/src/msw/utilsexc.cpp
186222
${SOURCE_DIR}/wxWidgets/src/msw/utilsgui.cpp
187223
${SOURCE_DIR}/wxWidgets/src/msw/utilswin.cpp
188224
${SOURCE_DIR}/wxWidgets/src/msw/uxtheme.cpp
225+
${SOURCE_DIR}/wxWidgets/src/msw/webview_edge.cpp
226+
${SOURCE_DIR}/wxWidgets/src/msw/webview_ie.cpp
189227
${SOURCE_DIR}/wxWidgets/src/msw/window.cpp
190228
${SOURCE_DIR}/wxWidgets/src/msw/ownerdrw.cpp
229+
${SOURCE_DIR}/wxWidgets/src/msw/ole/automtn.cpp
191230
${SOURCE_DIR}/wxWidgets/src/common/wxprintf.cpp)
192231

193232
add_library(${PROJECT_NAME} OBJECT ${SOURCES})
233+
234+
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/../../packages.config" PACKAGES_CONFIG_FILE)
235+
string(REGEX MATCH "package id=\"Microsoft.Web.WebView2\" version=\"([^\"]+)\"" WEBVIEW_MATCH "${PACKAGES_CONFIG_FILE}")
236+
237+
message(STATUS "Using WebView2 version ${CMAKE_MATCH_1}")
238+
239+
set(WEBVIEW2_VERSION ${CMAKE_MATCH_1})
240+
set(WEBVIEW2_URL "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/${WEBVIEW2_VERSION}")
241+
242+
set(WEBVIEW2_DEFAULT_PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/packages/Microsoft.Web.WebView2.${WEBVIEW2_VERSION}")
243+
244+
if(NOT EXISTS ${WEBVIEW2_PACKAGE_DIR})
245+
unset(WEBVIEW2_PACKAGE_DIR CACHE)
246+
endif()
247+
find_path(WEBVIEW2_PACKAGE_DIR
248+
NAMES build/native/include/WebView2.h
249+
PATHS
250+
"${PROJECT_SOURCE_DIR}/3rdparty/webview2"
251+
${WEBVIEW2_DEFAULT_PACKAGE_DIR}
252+
)
253+
254+
if (NOT WEBVIEW2_PACKAGE_DIR)
255+
message(STATUS "WebView2 SDK not found locally, downloading...")
256+
set(WEBVIEW2_PACKAGE_DIR ${WEBVIEW2_DEFAULT_PACKAGE_DIR} CACHE PATH "WebView2 SDK PATH" FORCE)
257+
file(DOWNLOAD
258+
${WEBVIEW2_URL}
259+
${CMAKE_CURRENT_BINARY_DIR}/webview2.nuget)
260+
file(MAKE_DIRECTORY ${WEBVIEW2_PACKAGE_DIR})
261+
execute_process(COMMAND
262+
"${CMAKE_COMMAND}" -E tar x "${CMAKE_CURRENT_BINARY_DIR}/webview2.nuget"
263+
WORKING_DIRECTORY "${WEBVIEW2_PACKAGE_DIR}"
264+
)
265+
endif()
266+
set(WEBVIEW2_PACKAGE_DIR ${WEBVIEW2_PACKAGE_DIR} CACHE INTERNAL "" FORCE)
267+
268+
set(INCLUDE_DIRS ${SOURCE_DIR}/wxWidgets/include/wx/msw/wrl ${SOURCE_DIR}/wxWidgets_setup_h ${SOURCE_DIR}/wxWidgets/include)
269+
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
270+
# Note: WebView2Loader is built with buffercheck, which isn't available on LLVM MinGW. Thus, we have no choice
271+
# but to require WebView2Loader.dll along with WinSparkle when built with this version of MinGW.
272+
set(WEBVIEW2_LOADER_LIB "${WEBVIEW2_PACKAGE_DIR}/build/native/${WEBVIEW2_LOADER_ARCH}/WebView2Loader.dll.lib")
273+
set(WEBVIEW2_LOADER_LIB_DLL "${WEBVIEW2_PACKAGE_DIR}/build/native/${WEBVIEW2_LOADER_ARCH}/WebView2Loader.dll")
274+
set(WEBVIEW2_LOADER_LIB_DLL ${WEBVIEW2_LOADER_LIB_DLL} CACHE INTERNAL "" FORCE)
275+
else(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
276+
set(WEBVIEW2_LOADER_LIB "${WEBVIEW2_PACKAGE_DIR}/build/native/${WEBVIEW2_LOADER_ARCH}/WebView2LoaderStatic.lib")
277+
endif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
278+
set(WEBVIEW2_LOADER_LIB ${WEBVIEW2_LOADER_LIB} CACHE INTERNAL "" FORCE)
279+
194280
set(wxWidgets_INCLUDE_DIRS ${INCLUDE_DIRS} PARENT_SCOPE)
281+
include_directories(${INCLUDE_DIRS})
195282

196283
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
197284
include(PCHSupport)
@@ -200,3 +287,5 @@ if(NOT PCHSupport_FOUND)
200287
endif()
201288

202289
ADD_PRECOMPILED_HEADER(${PROJECT_NAME} ${SOURCE_DIR}/wxWidgets/include/wx/wxprec.h)
290+
291+
target_include_directories(${PROJECT_NAME} PUBLIC "${WEBVIEW2_PACKAGE_DIR}/build/native/include")

cmake/wxWidgets/PCHSupport.cmake

+12-12
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# for other platforms this simply falls back to ADD_NATIVE_PRECOMPILED_HEADER
1717
# SET_PRECOMPILED_HEADER targetName hFileName cppFileName
1818

19-
IF(CMAKE_COMPILER_IS_GNUCXX)
19+
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
2020

2121
EXEC_PROGRAM(
2222
${CMAKE_CXX_COMPILER}
@@ -26,14 +26,14 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
2626
SET(PCHSupport_FOUND TRUE)
2727
SET(_PCH_include_prefix "-I")
2828

29-
ELSE(CMAKE_COMPILER_IS_GNUCXX)
29+
ELSE(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
3030
IF(WIN32)
3131
SET(PCHSupport_FOUND TRUE) # for experimental msvc support
3232
SET(_PCH_include_prefix "/I")
3333
ELSE(WIN32)
3434
SET(PCHSupport_FOUND FALSE)
3535
ENDIF(WIN32)
36-
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
36+
ENDIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
3737

3838

3939
MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags)
@@ -42,16 +42,16 @@ MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags)
4242
STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name)
4343
SET(${_out_compile_flags} ${${_flags_var_name}} )
4444

45-
IF(CMAKE_COMPILER_IS_GNUCXX)
45+
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
4646

4747
GET_TARGET_PROPERTY(_targetType ${_PCH_current_target} TYPE)
4848
IF(${_targetType} STREQUAL SHARED_LIBRARY)
4949
LIST(APPEND ${_out_compile_flags} "${${_out_compile_flags}} -fPIC")
5050
ENDIF(${_targetType} STREQUAL SHARED_LIBRARY)
5151

52-
ELSE(CMAKE_COMPILER_IS_GNUCXX)
52+
ELSE(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
5353
## TODO ... ? or does it work out of the box
54-
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
54+
ENDIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
5555

5656
GET_DIRECTORY_PROPERTY(DIRINC INCLUDE_DIRECTORIES )
5757
FOREACH(item ${DIRINC})
@@ -88,7 +88,7 @@ MACRO(_PCH_GET_COMPILE_COMMAND out_command _input _output)
8888
FILE(TO_NATIVE_PATH ${_output} _native_output)
8989

9090

91-
IF(CMAKE_COMPILER_IS_GNUCXX)
91+
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
9292
IF(CMAKE_CXX_COMPILER_ARG1)
9393
# remove leading space in compiler argument
9494
STRING(REGEX REPLACE "^ +" "" pchsupport_compiler_cxx_arg1 ${CMAKE_CXX_COMPILER_ARG1})
@@ -101,7 +101,7 @@ MACRO(_PCH_GET_COMPILE_COMMAND out_command _input _output)
101101
${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input}
102102
)
103103
ENDIF(CMAKE_CXX_COMPILER_ARG1)
104-
ELSE(CMAKE_COMPILER_IS_GNUCXX)
104+
ELSE(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
105105

106106
SET(_dummy_str "#include <${_input}>")
107107
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pch_dummy.cpp ${_dummy_str})
@@ -111,7 +111,7 @@ MACRO(_PCH_GET_COMPILE_COMMAND out_command _input _output)
111111
)
112112
#/out:${_output}
113113

114-
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
114+
ENDIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
115115

116116
ENDMACRO(_PCH_GET_COMPILE_COMMAND )
117117

@@ -121,7 +121,7 @@ MACRO(_PCH_GET_TARGET_COMPILE_FLAGS _cflags _header_name _pch_path _dowarn )
121121

122122
FILE(TO_NATIVE_PATH ${_pch_path} _native_pch_path)
123123

124-
IF(CMAKE_COMPILER_IS_GNUCXX)
124+
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
125125
# for use with distcc and gcc >4.0.1 if preprocessed files are accessible
126126
# on all remote machines set
127127
# PCH_ADDITIONAL_COMPILER_FLAGS to -fpch-preprocess
@@ -133,11 +133,11 @@ MACRO(_PCH_GET_TARGET_COMPILE_FLAGS _cflags _header_name _pch_path _dowarn )
133133
ELSE (_dowarn)
134134
SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include ${CMAKE_CURRENT_BINARY_DIR}/${_header_name} " )
135135
ENDIF (_dowarn)
136-
ELSE(CMAKE_COMPILER_IS_GNUCXX)
136+
ELSE(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
137137

138138
set(${_cflags} "/Fp${_native_pch_path} /Yu${_header_name}" )
139139

140-
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
140+
ENDIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
141141

142142
ENDMACRO(_PCH_GET_TARGET_COMPILE_FLAGS )
143143

src/error.h

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#ifndef _error_h_
2727
#define _error_h_
2828

29+
#include <string>
2930
#include <stdexcept>
3031

3132
namespace winsparkle

0 commit comments

Comments
 (0)