Ühes varasemas osas kirjutasin, kuidas saab tegutseda TDM-GCC, CLion-i ja google test-ga. See kõik töötab, aga Visual Studiol on siiski mõned eelised:

  • Genereeritud exe fail on kõvasti väiksem ja kood on ilmselt ka paremini optimeeritud kui MinGW GCC kompilaatorit kasutades
  • Visual Studio on kiirem kui GCC
  • Visual Studio silur on võimsam

Laadin alla: 

https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.2/wxWidgets-3.0.2.zip

Teen muudatused paaris failis vastavalt siin kirjeldatule:

https://forums.wxwidgets.org/viewtopic.php?t=40491

include/wx/propgrid/advprops.h

 
+// https://forums.wxwidgets.org/viewtopic.php?t=40491	
     wxDateTime GetDateValue() const
     {
         //return m_valueDateTime;
-        return m_value;
+        return m_value.GetDateTime();
     }


src/zlib/gzguts.h

-#ifdef _MSC_VER
+// https://forums.wxwidgets.org/viewtopic.php?t=40491
+#if (defined(_MSC_VER) && (_MSC_VER < 1900))
+#  define snprintf _snprintf
+#endif


src/tiff/libtiff/tif_config.h

-#define snprintf _snprintf
+// https://forums.wxwidgets.org/viewtopic.php?t=40491
+#if (defined(_MSC_VER) && (_MSC_VER < 1900))
+	#define snprintf _snprintf
+#endif

Tegelikult sellist lahendust ma ei soovita. Palju lihtsam on avada git käsurida ja anda mõned käsklused:

cd c:/
mkdir git-wx-3.0
cd git-wx-3.0
git clone https://github.com/wxWidgets/wxWidgets.git .
git checkout origin/WX_3_0_BRANCH
git reset --hard 92d9101b

See haru sisaldab kõiki viimaseid 3.0.x versiooni täiendusi ja parandusi. Vajadusel on lihtne uusi parandusi alla laadida ja uuesti kompileerida. On siiski oht, et uued parandused ja täiendused rikuvad ära mõne platvormi ja kompilaatoriga eduka kompileerimise. Näiteks ka praegusel juhul ei õnnestunud mul viimaste muudatustega TDM MinGW GCC-ha kompileerimine ning läksin ajas tagasi andes käskluse "git reset --hard 92d9101b".

Käivitan Visual Studio 2015, avan C:\git-wx-3.0\build\msw\wx.dsw ja konverteerin projektid.

Seejärel kompileerin. Kui terve solution korraga ei õnnestu, siis kompileerin projektid ükshaaval.

Teine kiirem, mugavam ja eelistatum võimalus on avada Developer Command Prompt for VS2015 ja anda käsklused:

cd C:\git-wx-3.0\build\msw
nmake /f makefile.vc TARGET_CPU=x86 BUILD=release
nmake /f makefile.vc TARGET_CPU=x86 BUILD=debug
nmake /f makefile.vc TARGET_CPU=x64 BUILD=release
nmake /f makefile.vc TARGET_CPU=x64 BUILD=debug

Selleks, et cmake wxWidgets-i üles leiaks, pean määrama keskkonnamuutuja:

SET WXWIN=C:\git-wx-3.0

Kui kasutada wxFormBuilder programmi kasutajaliidese disainimiseks, siis genereeritud koodifailid on sellel UTF-8 vormingus. Üks häda on veel selles, et Visual Studio arvates on need tavalises ASCII vormingus ning täpitähed lähevad siis Visual Studio-ga kompileerides sassi. Aitab tuntud käsureaprogramm unix2dos.exe. Kui meil on MSYS2 installeeritud, siis on see tõenäoliselt juba meie arvutis olemas. Niinimetatud maagilised 3 baiti faili ette saame lisada käsklusega:

C:\msys64\usr\bin\unix2dos.exe --add-bom wxFormBuilderGenereeritud.cpp

 

Google testi jaoks on solution fail olemas. Avan C:\Src\cpp\googletest-release-1.7.0\msvc\gtest-md.sln ja kompileerin nii debug kui release versioonid.

 

Nüüd veel mõned katkendid cmake failist:

#wxWidgets
set(wxWidgets_USE_REL_AND_DBG ON)
if(MSVC)	
	if(${CMAKE_BUILD_TYPE} MATCHES "Release")
		set(wxWidgets_CONFIGURATION mswu)
	elseif(${CMAKE_BUILD_TYPE} MATCHES "Debug")
		set(wxWidgets_CONFIGURATION mswud)
	endif()
else()
	set(wxWidgets_ROOT_DIR "C:/git-wx-3.0")
endif()

ADD_DEFINITIONS("-D_UNICODE")
message(STATUS "wxWidgets_CONFIGURATION: ${wxWidgets_CONFIGURATION}")
message(STATUS "wxWidgets_ROOT_DIR: ${wxWidgets_ROOT_DIR}")

find_package(wxWidgets COMPONENTS core base REQUIRED)
include(${wxWidgets_USE_FILE})
MESSAGE(WARNING "wxWidgets_USE_FILE:${wxWidgets_USE_FILE}")

if(WIN32)
    set(GTEST_ROOT "C:/Src/cpp/googletest-release-1.7.0")
	if(MSVC)
		set(GTEST_LIBRARY_DIRS "${GTEST_ROOT}/msvc/gtest-md/Release")
	else()
		set(GTEST_LIBRARY_DIRS "${GTEST_ROOT}/tdm-mingw-build")
	endif()
else()
    set(GTEST_ROOT "/home/tiit/Src/cpp/googletest-release-1.7.0")
    set(GTEST_LIBRARY_DIRS "${GTEST_ROOT}/linux-build")
endif()
set(GTEST_INCLUDE_DIRS "${GTEST_ROOT}/include") # # # # if(WIN32) set(GTEST_ROOT "C:/Src/cpp/googletest-release-1.7.0") if(MSVC) set(GTEST_LIBRARY_DIRS "${GTEST_ROOT}/msvc/gtest-md/Release") else() set(GTEST_LIBRARY_DIRS "${GTEST_ROOT}/tdm-mingw-build") endif() set(RAPIDJSON_INCLUDE_DIRS "C:/Src/cpp/rapidjson-1.0.2/include") else() set(GTEST_ROOT "/home/tiit/Src/cpp/googletest-release-1.7.0") set(GTEST_LIBRARY_DIRS "${GTEST_ROOT}/linux-build") set(RAPIDJSON_INCLUDE_DIRS "/home/tiit/Src/cpp/rapidjson-1.0.2/include") endif()
set(GTEST_INCLUDE_DIRS "${GTEST_ROOT}/include")

 

Viiteid: 

https://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide

https://forums.wxwidgets.org/viewtopic.php?t=40491

https://en.wikipedia.org/wiki/Byte_order_mark

https://msdn.microsoft.com/en-us/library/xwy0e8f2.aspx

https://github.com/SCIInstitute/fluorender/blob/master/README.md