Ü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