After a lot of struggle and silly mistakes I've got to the point where I could finally build Code::Blocks with higher scintilla version, sadly after building for a while it just spewed out more errors. C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxscintilla\src\ScintillaWX.cpp: In member function 'bool ScintillaWX::CreateSystemCaret()':
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxscintilla\src\ScintillaWX.cpp:737:27: error: 'sci' was not declared in this scope
::ShowCaret(GetHwndOf(sci));
^
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include/wx/msw/private.h:719:42: note: in definition of macro 'GetHwndOf'
#define GetHwndOf(win) ((HWND)((win)->GetHWND()))
^~~
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxscintilla\src\ScintillaWX.cpp: In member function 'bool ScintillaWX::DestroySystemCaret()':
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxscintilla\src\ScintillaWX.cpp:748:31: error: 'sci' was not declared in this scope
::HideCaret(GetHwndOf(sci));
^
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include/wx/msw/private.h:719:42: note: in definition of macro 'GetHwndOf'
#define GetHwndOf(win) ((HWND)((win)->GetHWND()))
Honestly getting really frustrated with this, I am compiling something so simple, yet there were so many quirks that weren't explained on wiki or didn't make any sense to me.
Thanks for the fixes, I'll try compiling it again in a bit. Here are the things that should be improved in wiki IMO:
- The whole SVN section is a bit confusing, as far as I understood it, it is not required unless you want to download CB build with it or need that additional feature that you get when svn is included in the PATH. I think it needs cleaning up, but I am not sure how it should be fixed since I don't even understand it fully.
- In configure and build section you're told to include every suggested flag even though they don't apply to every case. Either don't explain them and tell people to include it every single time (if they don't cause any kind of bugs) or add the first two flags mentioned to some sort of troubleshooting section below.
- Add a troubleshooting section or explain somewhere of what kind of errors you could run into when compiling wxWidgets https://wiki.wxwidgets.org/Compiling_wxWidgets_with_MinGW, the first "files not found" error ate up a good hour for me. It happens if you have MSYS in your path as well as minGW. I am not sure if I am just this stupid or if the wiki is lacking that.
- I didn't understand self-hosting part at all, but from what I gathered it is out of place in that guide. Might also be that I am just can't grasp the concept.
- Also in build wxWidgets part, I'd suggest telling people to change path with GUI (advanced settings, Environment variables) instead of command line, you could also tell them to check for any other toolsets already included so it would not cause previously mentioned error. If it was up to me I'd also add some article that explains what PATH is but that might be a bit overboard and lack of knowledge that was specific only to me.
That's all. Do take this criticism with a grain of salt, I don't have much experience compiling programs.
[Edit]: Managed to compile some more and came across more errors. With help of google I fixed them by including WINVER=0x0601 in project defines list. After compiling some more components I managed to get even more errors, here they are (there were more identical winver warnings but I had to delete them since there is a character limit on posting messages):
||=== Build: tinyXML in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: AutoRevision in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: ConsoleRunner in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: Squirrel in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\scripting\squirrel\sqapi.cpp||In function 'SQRESULT sq_setdelegate(HSQUIRRELVM, SQInteger)':|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\scripting\squirrel\sqapi.cpp|784|warning: this 'if' clause does not guard... [-Wmisleading-indentation]|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\scripting\squirrel\sqapi.cpp|784|note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'|
||=== Build: Squirrel std lib in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: SqPlus in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: scintilla in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
:0|0|warning: "WINVER" redefined|
:0|0|note: this is the location of the previous definition|
||=== Build: wxpropgrid in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\propgrid.cpp||In function 'bool wxPGVariantToWxObjectPtr(const wxVariant&, wxObject**)':|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\propgrid.cpp|9879|warning: this 'if' clause does not guard... [-Wmisleading-indentation]|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\propgrid.cpp|9882|note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\propgrid.cpp||In member function 'wxString wxPropertyGridInterface::SaveEditableState(int) const':|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\propgrid.cpp|11094|warning: this 'if' clause does not guard... [-Wmisleading-indentation]|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\propgrid.cpp|11096|note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\props.cpp||In member function 'virtual wxString wxIntProperty::GetValueAsString(int) const':|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\props.cpp|429|warning: this 'if' clause does not guard... [-Wmisleading-indentation]|
C:\Users\SomeGuy\Desktop\codeblocks_sf-scintilla_3_7_5\src\sdk\wxpropgrid\src\props.cpp|432|note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'|
||=== Build: sdk in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: src in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
C:\Users\SomeGuy\Desktop\CODEBL~1\src\src\RESOUR~1\RESOUR~1.RC|137|warning: #warning Manifest: x86.manifest [-Wcpp]|
||=== Build: Abbreviations in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: AStyle in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: Autosave in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: Compiler depslib in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: Compiler in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: Debugger in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
||=== Build: Code-completion in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler) ===|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h||In member function 'bool ClassRegistrar::Register(const WNDCLASS&)':|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: ambiguous overload for 'operator=' (operand types are 'wxString' and 'const LPCSTR {aka const char* const}')|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|676|note: candidate: wxString& wxString::operator=(int) <near match>|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|676|note: conversion of argument 1 would be ill-formed:|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: invalid conversion from 'LPCSTR {aka const char*}' to 'int' [-fpermissive]|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|956|note: candidate: wxString& wxString::operator=(wxChar) <near match>|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|956|note: conversion of argument 1 would be ill-formed:|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: invalid conversion from 'LPCSTR {aka const char*}' to 'wxChar {aka wchar_t}' [-fpermissive]|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|970|note: candidate: wxString& wxString::operator=(const wxWCharBuffer&) <near match>|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|970|note: conversion of argument 1 would be ill-formed:|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: invalid user-defined conversion from 'const LPCSTR {aka const char* const}' to 'const wxWCharBuffer&' [-fpermissive]|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\buffer.h|134|note: candidate is: wxWCharBuffer::wxWCharBuffer(size_t) <near match>|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\buffer.h|33|note: in definition of macro 'DEFINE_BUFFER'|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\buffer.h|134|note: conversion of argument 1 would be ill-formed:|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\buffer.h|33|note: in definition of macro 'DEFINE_BUFFER'|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: invalid conversion from 'LPCSTR {aka const char*}' to 'size_t {aka unsigned int}' [-fpermissive]|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: invalid conversion from 'LPCSTR {aka const char*}' to 'size_t {aka unsigned int}' [-fpermissive]|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\buffer.h|134|note: initializing argument 1 of 'wxWCharBuffer::wxWCharBuffer(size_t)'|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\buffer.h|33|note: in definition of macro 'DEFINE_BUFFER'|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|659|note: candidate: wxString& wxString::operator=(const wxString&) <near match>|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|659|note: conversion of argument 1 would be ill-formed:|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: conversion from 'const LPCSTR {aka const char* const}' to 'const wxString' is ambiguous|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|692|note: candidate: wxString::wxString(wxChar, size_t) <near match>|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|692|note: conversion of argument 1 would be ill-formed:|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: invalid conversion from 'LPCSTR {aka const char*}' to 'wxChar {aka wchar_t}' [-fpermissive]|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|682|note: candidate: wxString::wxString(int) <near match>|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\string.h|682|note: conversion of argument 1 would be ill-formed:|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|680|error: invalid conversion from 'LPCSTR {aka const char*}' to 'int' [-fpermissive]|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h||In destructor 'ClassRegistrar::~ClassRegistrar()':|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|695|error: cannot convert 'wxString' to 'LPCSTR {aka const char*}' for argument '1' to 'BOOL UnregisterClassA(LPCSTR, HINSTANCE)'|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h||In function 'wxString wxGetFullModuleName(HMODULE)':|
C:\Users\SomeGuy\Desktop\wxMSW-2.8.12\include\wx\msw\private.h|781|error: cannot convert 'wxStringBuffer' to 'LPSTR {aka char*}' for argument '2' to 'DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD)'|
||=== Build finished: 11 error(s), 151 warning(s) (14 minute(s), 20 second(s)) ===|
Straight up just deleted and unzipped the source, checked the settings again seems like it's reverted. Hit rebuild and got errors that previous change fixed. I believe I have three compilers right now. MinGW installed just on it's own, some other MinGW version installed with normal codeblocks version and Visual Studio IDE which comes with a compiler too, no idea what kind though. Currently there is only one in PATH and that's the first I mentioned, here's the version info
(https://puu.sh/xjFE7.png).
I also made sure that wxWidgets and night build of CodeBlocks I am using to build this one uses same compiler. Here is the build log https://pastebin.com/mkVHj2RQ (https://pastebin.com/mkVHj2RQ), it's a pretty big text file, froze my laptop for a bit.
normally i use gcc4.9 and gcc5.x from here http://tdm-gcc.tdragon.net/download
Now i tried gcc 6.4 from here https://sourceforge.net/projects/cbadvanced/files/MinGW%20Builds/TDM/
i had problems by compiling wxWidgets 2.8 but with this command line i was able to build it without problems
mingw32-make.exe -f makefile.gcc BUILD=release MONOLITHIC=1 UNICODE=1 SHARED=1
CXXFLAGS="-D_WIN32_IE=0x0603"
Codeblocks compiled fine after building wxWidgets.
I googled a bit and found out, that this seems to be some mingw bug, so where do you get your compiler from?
Anyway: i tried the font, and it is "light" as in your image. You may have to select the same font as in Notepad++. If i select Haskling-Black codeblocks looks like notepad++
For the Ligatures (<- -> => >> <<): They don't work (if i understand it correctly they should get replaced with one single glyph? )