1

When attempting to build the wxWidgets (3.0.5) library with MinGW-W64 (x86-64) GCC 8.1.0, I get the following output:

wxWidgets-3.0.5\build\msw> mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=debug -j4
if not exist gcc_mswuddll mkdir gcc_mswuddll
if not exist ..\..\lib\gcc_dll mkdir ..\..\lib\gcc_dll
if not exist ..\..\lib\gcc_dll\mswud\wx\setup.h copy ..\..\include\wx\msw\setup.h ..\..\lib\gcc_dll\mswud\wx\setup.h
gcc -c -o gcc_mswuddll\wxregex_regcomp.o -g -O0 -mthreads  -DHAVE_W32API_H -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswud -D__WXMSW__  -D_UNICODE   -MTgcc_mswuddll\wxregex_regcomp.o -MFgcc_mswuddll\wxregex_regcomp.o.d -MD -MP ../../src/regex/regcomp.c
gcc -c -o gcc_mswuddll\wxregex_regexec.o -g -O0 -mthreads  -DHAVE_W32API_H -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswud -D__WXMSW__  -D_UNICODE   -MTgcc_mswuddll\wxregex_regexec.o -MFgcc_mswuddll\wxregex_regexec.o.d -MD -MP ../../src/regex/regexec.c
gcc -c -o gcc_mswuddll\wxregex_regerror.o -g -O0 -mthreads  -DHAVE_W32API_H -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswud -D__WXMSW__  -D_UNICODE   -MTgcc_mswuddll\wxregex_regerror.o -MFgcc_mswuddll\wxregex_regerror.o.d -MD -MP ../../src/regex/regerror.c
The system cannot find the path specified.
        0 file(s) copied.
mingw32-make: *** [makefile.gcc:5651: ..\..\lib\gcc_dll\mswud\wx\setup.h] Error 1
mingw32-make: *** Waiting for unfinished jobs....
In file included from In file included from In file included from ..\..\include/wx/defs.h:27..\..\include/wx/defs.h:27                                                                                                  from ,
                 from ,
                 from                               ../../src/regex/regcustom.h:39                                                                                                                                      from ,
                 from ,
                 from                             ../../src/regex/regguts.h:38                                                                                                                                          from ,
                 from ,
                 from                             ../../src/regex/regexec.c:32                                                                                                                         :
:
                                   ..\..\include/wx/platform.h:183:10:                                                   fatal error:                                                                   #include wx/setup.h: No such file or directory
 #include wx/setup.h: No such file or directory
 #include             "wx/setup.h"                                                                                                                                                                     
                                                                                                                                                                                                                 ^~~~~~~~~~~~
                                                                                                                                                                                                       cc
oocmpomimplpiialtalitoainot ni totener rmtmieinrnamatitenedad.t.
e
d.
mingw32-make: *** [makefile.gcc:5702: gcc_mswuddll\wxregex_regcomp.o] Error 1
mingw32-make: *** [makefile.gcc:5705: gcc_mswuddll\wxregex_regexec.o] Error 1
mingw32-make: *** [makefile.gcc:5708: gcc_mswuddll\wxregex_regerror.o] Error 1

Similar problems when I set BUILD=release

When I copy setup.h from wxWidgets-3.0.5\include\wx\msw\ to wxWidgets-3.0.5\lib\gcc_dll\mswu\wx\, the errors seem to go away.

However, when I attempt to build this very basic app in CLion (2020.1.1), I get the following errors:

#include <iostream>
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
====================[ Build | app | Debug ]=================================
CLion\ch-0\201.7223.86\bin\cmake\win\bin\cmake.exe --build app\cmake-build-debug --target app -- -j 8
Scanning dependencies of target app
[ 50%] Building CXX object CMakeFiles/app.dir/main.cpp.obj
In file included from wxWidgets-3.0.5/include/wx/defs.h:27,
                 from wxWidgets-3.0.5/include/wx/wxprec.h:12,
                 from app\main.cpp:2:
wxWidgets-3.0.5/include/wx/platform.h:183:10: fatal error: wx/setup.h: No such file or directory
 #include "wx/setup.h"
          ^~~~~~~~~~~~
compilation terminated.
mingw32-make.exe[3]: *** [CMakeFiles\app.dir\build.make:63: CMakeFiles/app.dir/main.cpp.obj] Error 1
mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:75: CMakeFiles/app.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:82: CMakeFiles/app.dir/rule] Error 2
mingw32-make.exe: *** [Makefile:117: app] Error 2

Here is the CMakeLists.txt file (debug version):

cmake_minimum_required(VERSION 3.16)
project(app)

set(CMAKE_CXX_STANDARD 14)
include_directories(
        includes
        wxWidgets-3.0.5
        wxWidgets-3.0.5/include
        wxWidgets-3.0.5/include/msvc/wx
        wxWidgets-3.0.5/lib/gcc_lib/mswu
)
link_directories(
        wxWidgets-3.0.5/lib/gcc_lib
)

set(
        WX_LIBS
        libwxmsw30ud_propgrid.a
        libwxmsw30ud_ribbon.a
        libwxmsw30ud_stc.a
        libwxmsw30ud_webview.a
        libwxmsw30ud_gl.a
        libwxmsw30ud_richtext.a
        libwxmsw30ud_xrc.a
        libwxmsw30ud_aui.a
        libwxmsw30ud_html.a
        libwxmsw30ud_adv.a
        libwxmsw30ud_core.a
        libwxbase30ud_xml.a
        libwxbase30ud_net.a
        libwxbase30ud.a
        libwxscintillad.a
        libwxtiffd.a
        libwxjpegd.a
        libwxpngd.a
        libwxzlibd.a
        libwxregexud.a
        libwxexpatd.a
        libwxmsw30ud_media.a
)

set(SOURCE_FILES aui.cpp)
add_executable(app main.cpp)
target_link_libraries(
        app
        ${WX_LIBS}
#        -lcomctl32
)

Can anyone tell me what is causing these problems?


Update #1:

Now using wxWidgets 3.1.3.

New contents of main.cpp:

#include <iostream>
#include <wx/wxprec.h>

#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif

class MyApp : public wxApp {
public:
    virtual bool OnInit();
};

class MyFrame : public wxFrame {
public:
    MyFrame(const wxString &title, const wxPoint &pos, const wxSize &size);

private:
    void OnHello(wxCommandEvent &event);
    void OnExit(wxCommandEvent &event);
    void OnAbout(wxCommandEvent &event);

wxDECLARE_EVENT_TABLE();
};

enum {
    ID_Hello = 1
};

wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
                EVT_MENU(ID_Hello, MyFrame::OnHello)
                EVT_MENU(wxID_EXIT, MyFrame::OnExit)
                EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
wxEND_EVENT_TABLE()

wxIMPLEMENT_APP(MyApp);
/* This is what the macro expands to: */
/* extern "C" int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wxCmdLineArgType, int nCmdShow) {
    ;;
    return wxEntry(hInstance, hPrevInstance, 0, nCmdShow);
}
MyApp &wxGetApp() { return *static_cast<MyApp *>(wxApp::GetInstance()); }
wxAppConsole *wxCreateApp() {
    wxAppConsole::CheckBuildOptions(
            "3" "." "1" "." "3" " (" "wchar_t" ",Visual C++ " "1900" ",wx containers" ",compatible with 3.0" ")",
            "your program");
    return new MyApp;
}

wxAppInitializer wxTheAppInitializer((wxAppInitializerFunction) wxCreateApp)
 */

bool MyApp::OnInit() {
    MyFrame *frame = new MyFrame("Hello World", wxPoint(50, 50), wxSize(450, 340));
    frame->Show(true);
    return true;
}

MyFrame::MyFrame(const wxString &title, const wxPoint &pos, const wxSize &size)
        : wxFrame(NULL, wxID_ANY, title, pos, size) {
    wxMenu *menuFile = new wxMenu;
    menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
                     "Help string shown in status bar for this menu item");
    menuFile->AppendSeparator();
    menuFile->Append(wxID_EXIT);
    wxMenu *menuHelp = new wxMenu;
    menuHelp->Append(wxID_ABOUT);
    wxMenuBar *menuBar = new wxMenuBar;
    menuBar->Append(menuFile, "&File");
    menuBar->Append(menuHelp, "&Help");
    SetMenuBar(menuBar);
    CreateStatusBar();
    SetStatusText("Welcome to wxWidgets!");
}

void MyFrame::OnExit(wxCommandEvent &event) {
    Close(true);
}

void MyFrame::OnAbout(wxCommandEvent &event) {
    wxMessageBox("This is a wxWidgets' Hello world sample",
                 "About Hello World", wxOK | wxICON_INFORMATION);
}

void MyFrame::OnHello(wxCommandEvent &event) {
    wxLogMessage("Hello world from wxWidgets!");
}


/*int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}*/

New contents of the CMakeLists.txt file:

cmake_minimum_required(VERSION 3.16)
project(HelloWorld)

set(CMAKE_CXX_STANDARD 14)
set(SRC_FILES
    main.cpp
    )

add_link_options(LINKER: UNICODE=1)
add_link_options(LINKER: BUILD=debug)

include_directories(
    includes
    E:/cpp/lib/wxWidgets-3.1.3
    E:/cpp/lib/wxWidgets-3.1.3/include
    E:/cpp/lib/wxWidgets-3.1.3/include/msvc
    E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx
    E:/cpp/lib/wxWidgets-3.1.3/lib/gcc_lib/mswud
)
link_directories(
    E:/cpp/Lib/wxWin/lib/vc14x_x64_dll
)

add_executable(${PROJECT_NAME} ${SRC_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES
    LINK_FLAGS /SUBSYSTEM:WINDOWS
    )

After adding wxWidgets-3.0.5/include/msvc to the include_directories list, I get the following errors:

In file included from E:/cpp/lib/wxWidgets-3.1.3/include/wx/platform.h:154,
                 from E:/cpp/lib/wxWidgets-3.1.3/include/wx/defs.h:45,
                 from E:/cpp/lib/wxWidgets-3.1.3/include/wx/wxprec.h:12,
                 from E:\cpp\dev\HelloWorld\main.cpp:2:
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:12:6: error: #error "This file should only be included when using Microsoft Visual C++"
     #error "This file should only be included when using Microsoft Visual C++"
      ^~~~~
In file included from E:/cpp/lib/wxWidgets-3.1.3/include/wx/version.h:16,
                 from E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:19,
                 from E:/cpp/lib/wxWidgets-3.1.3/include/wx/platform.h:154,
                 from E:/cpp/lib/wxWidgets-3.1.3/include/wx/defs.h:45,
                 from E:/cpp/lib/wxWidgets-3.1.3/include/wx/wxprec.h:12,
                 from E:\cpp\dev\HelloWorld\main.cpp:2:
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:135:31: error: pasting "/" and "vc_x64_lib" does not give a valid preprocessing token
         wxCONCAT5(../../../lib/, wxLIB_SUBDIR, /, wxTOOLKIT_PREFIX, /wx/setup.h)
                               ^
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:18:37: note: in definition of macro 'wxCONCAT_HELPER'
 #define wxCONCAT_HELPER(text, line) text ## line
                                     ^~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:23:14: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT(x1, x2), x3)
              ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:25:14: note: in expansion of macro 'wxCONCAT3'
     wxCONCAT(wxCONCAT3(x1, x2, x3), x4)
              ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:27:14: note: in expansion of macro 'wxCONCAT4'
     wxCONCAT(wxCONCAT4(x1, x2, x3, x4), x5)
              ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:135:9: note: in expansion of macro 'wxCONCAT5'
         wxCONCAT5(../../../lib/, wxLIB_SUBDIR, /, wxTOOLKIT_PREFIX, /wx/setup.h)
         ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:138:39: note: in expansion of macro 'wxSETUPH_PATH'
 #define wxSETUPH_PATH_STR wxSTRINGIZE(wxSETUPH_PATH)
                                       ^~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:140:10: note: in expansion of macro 'wxSETUPH_PATH_STR'
 #include wxSETUPH_PATH_STR
          ^~~~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:89:31: error: pasting "vc_x64_lib" and "/" does not give a valid preprocessing token
     #define wxCOMPILER_PREFIX vc
                               ^~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:18:37: note: in definition of macro 'wxCONCAT_HELPER'
 #define wxCONCAT_HELPER(text, line) text ## line
                                     ^~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:23:5: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT(x1, x2), x3)
     ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:21:5: note: in expansion of macro 'wxCONCAT_HELPER'
     wxCONCAT_HELPER(x1, x2)
     ^~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:23:14: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT(x1, x2), x3)
              ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:25:14: note: in expansion of macro 'wxCONCAT3'
     wxCONCAT(wxCONCAT3(x1, x2, x3), x4)
              ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:27:14: note: in expansion of macro 'wxCONCAT4'
     wxCONCAT(wxCONCAT4(x1, x2, x3, x4), x5)
              ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:135:9: note: in expansion of macro 'wxCONCAT5'
         wxCONCAT5(../../../lib/, wxLIB_SUBDIR, /, wxTOOLKIT_PREFIX, /wx/setup.h)
         ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:21:5: note: in expansion of macro 'wxCONCAT_HELPER'
     wxCONCAT_HELPER(x1, x2)
     ^~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:25:5: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT3(x1, x2, x3), x4)
     ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:21:5: note: in expansion of macro 'wxCONCAT_HELPER'
     wxCONCAT_HELPER(x1, x2)
     ^~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:23:5: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT(x1, x2), x3)
     ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:21:5: note: in expansion of macro 'wxCONCAT_HELPER'
     wxCONCAT_HELPER(x1, x2)
     ^~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:23:14: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT(x1, x2), x3)
              ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:25:14: note: in expansion of macro 'wxCONCAT3'
     wxCONCAT(wxCONCAT3(x1, x2, x3), x4)
              ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:115:9: note: in expansion of macro 'wxCONCAT4'
         wxCONCAT4(wxCOMPILER_PREFIX, wxARCH_SUFFIX, _lib, wxCFG)
         ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:115:19: note: in expansion of macro 'wxCOMPILER_PREFIX'
         wxCONCAT4(wxCOMPILER_PREFIX, wxARCH_SUFFIX, _lib, wxCFG)
                   ^~~~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:135:34: note: in expansion of macro 'wxLIB_SUBDIR'
         wxCONCAT5(../../../lib/, wxLIB_SUBDIR, /, wxTOOLKIT_PREFIX, /wx/setup.h)
                                  ^~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:138:39: note: in expansion of macro 'wxSETUPH_PATH'
 #define wxSETUPH_PATH_STR wxSTRINGIZE(wxSETUPH_PATH)
                                       ^~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:140:10: note: in expansion of macro 'wxSETUPH_PATH_STR'
 #include wxSETUPH_PATH_STR
          ^~~~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:135:48: error: pasting "/" and "msw" does not give a valid preprocessing token
         wxCONCAT5(../../../lib/, wxLIB_SUBDIR, /, wxTOOLKIT_PREFIX, /wx/setup.h)
                                                ^
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:18:37: note: in definition of macro 'wxCONCAT_HELPER'
 #define wxCONCAT_HELPER(text, line) text ## line
                                     ^~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:25:5: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT3(x1, x2, x3), x4)
     ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:21:5: note: in expansion of macro 'wxCONCAT_HELPER'
     wxCONCAT_HELPER(x1, x2)
     ^~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:23:5: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT(x1, x2), x3)
     ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:25:14: note: in expansion of macro 'wxCONCAT3'
     wxCONCAT(wxCONCAT3(x1, x2, x3), x4)
              ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:27:14: note: in expansion of macro 'wxCONCAT4'
     wxCONCAT(wxCONCAT4(x1, x2, x3, x4), x5)
              ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:135:9: note: in expansion of macro 'wxCONCAT5'
         wxCONCAT5(../../../lib/, wxLIB_SUBDIR, /, wxTOOLKIT_PREFIX, /wx/setup.h)
         ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:138:39: note: in expansion of macro 'wxSETUPH_PATH'
 #define wxSETUPH_PATH_STR wxSTRINGIZE(wxSETUPH_PATH)
                                       ^~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:140:10: note: in expansion of macro 'wxSETUPH_PATH_STR'
 #include wxSETUPH_PATH_STR
          ^~~~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:124:34: error: pasting "msw" and "/" does not give a valid preprocessing token
         #define wxTOOLKIT_PREFIX msw
                                  ^~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:18:37: note: in definition of macro 'wxCONCAT_HELPER'
 #define wxCONCAT_HELPER(text, line) text ## line
                                     ^~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:27:5: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT4(x1, x2, x3, x4), x5)
     ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:21:5: note: in expansion of macro 'wxCONCAT_HELPER'
     wxCONCAT_HELPER(x1, x2)
     ^~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:25:5: note: in expansion of macro 'wxCONCAT'
     wxCONCAT(wxCONCAT3(x1, x2, x3), x4)
     ^~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/wx/cpp.h:27:14: note: in expansion of macro 'wxCONCAT4'
     wxCONCAT(wxCONCAT4(x1, x2, x3, x4), x5)
              ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:135:9: note: in expansion of macro 'wxCONCAT5'
         wxCONCAT5(../../../lib/, wxLIB_SUBDIR, /, wxTOOLKIT_PREFIX, /wx/setup.h)
         ^~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:135:51: note: in expansion of macro 'wxTOOLKIT_PREFIX'
         wxCONCAT5(../../../lib/, wxLIB_SUBDIR, /, wxTOOLKIT_PREFIX, /wx/setup.h)
                                                   ^~~~~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:138:39: note: in expansion of macro 'wxSETUPH_PATH'
 #define wxSETUPH_PATH_STR wxSTRINGIZE(wxSETUPH_PATH)
                                       ^~~~~~~~~~~~~
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:140:10: note: in expansion of macro 'wxSETUPH_PATH_STR'
 #include wxSETUPH_PATH_STR
          ^~~~~~~~~~~~~~~~~
In file included from E:/cpp/lib/wxWidgets-3.1.3/include/wx/platform.h:154,
                 from E:/cpp/lib/wxWidgets-3.1.3/include/wx/defs.h:45,
                 from E:/cpp/lib/wxWidgets-3.1.3/include/wx/wxprec.h:12,
                 from E:\cpp\dev\HelloWorld\main.cpp:2:
E:/cpp/lib/wxWidgets-3.1.3/include/msvc/wx/setup.h:140:1: fatal error: ../../../lib/vc_x64_lib /msw /wx/setup.h: No such file or directory
 #include wxSETUPH_PATH_STR
 ^~~
compilation terminated.
mingw32-make.exe[3]: *** [CMakeFiles\HelloWorld.dir\build.make:66: CMakeFiles/HelloWorld.dir/main.cpp.obj] Error 1
mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:78: CMakeFiles/HelloWorld.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:85: CMakeFiles/HelloWorld.dir/rule] Error 2
mingw32-make.exe: *** [Makefile:120: HelloWorld] Error 2

Update #2:

With the possibility there could — or, should — be a different setup.h file to use, I analyzed the wxWidgets\3.1.3\build\msw\makefile.gcc file, these two lines are found, starting at line 5872:

..\..\include\wx\$(__SETUP_H_SUBDIR_FILENAMES)\setup.h: 
    if not exist ..\..\include\wx\$(__SETUP_H_SUBDIR_FILENAMES)\setup.h copy ..\..\include\wx\$(__SETUP_H_SUBDIR_FILENAMES)\setup0.h ..\..\include\wx\$(__SETUP_H_SUBDIR_FILENAMES)\setup.h

I did a search on setup0.h, did a search on a fresh unzip of the archive, and found nothing. Is the a ghost file?

Could this be it? Found on wxWidgets's GitHub repository?

J Vines
  • 182
  • 1
  • 16
  • try to use \ instead of / in the CMake set. – Igor May 10 '20 at 19:01
  • Tried that. CMake does not like it. CLion is able to parse it and know where to look for the headers. – J Vines May 10 '20 at 20:45
  • the first error is likely because of the `j4` option. The build is starting, but the file is not yet being copied. You can overcome it by starting the build without this option and then inerrupt it and issue the command with the `j4`. In terms of second error - are you sure that the configuration you are trying to build is exact match to the build of wxWidgets? (shared debug build). – Igor May 10 '20 at 21:10
  • Another "proper" method to avoid this error is to first run the build with the "setup_h" target (and with all the other options). This will copy the needed file(s) and you won't have to interrupt the process. Then you'll be able to launch your multi-processes command line. – Xaviou May 11 '20 at 19:50
  • The `SHARED` option is used to create a shared library (DLL, in Windows speak), and does not apply here. – J Vines May 11 '20 at 19:54
  • I ran into the same issue... interestingly only when creating the DLLs. After several trials I found that the -j x option was causing the problem. The normal libs were compiled with -j 16, while for the DLLs I had to delete this option completely (making the compilation process very long - but successful) – Ultra Junkie Nov 25 '20 at 17:49

1 Answers1

1

SOLVED!

Problems solved by locating the correct setup.h file — found on GitHub.

Updated cmakelists.txt to this:

cmake_minimum_required(VERSION 3.16)

project(HelloWorld)

set(CMAKE_CXX_STANDARD 14)

set(SRC_FILES
    main.cpp
    )

include_directories(
    includes
    E:/cpp/lib/wxWidgets-3.1.3
    E:/cpp/lib/wxWidgets-3.1.3/include
    E:/cpp/lib/wxWidgets-3.1.3/lib/gcc_dll/mswud
)

link_directories(
    E:/cpp/lib/wxWidgets-3.1.3/lib/gcc_dll
    E:/cpp/lib/wxWidgets-3.1.3/lib/gcc_dll/mswud
)

set(
    WX_LIBS
    libwxmsw31ud_propgrid.a
    libwxmsw31ud_ribbon.a
    libwxmsw31ud_stc.a
    libwxmsw31ud_webview.a
    libwxmsw31ud_gl.a
    libwxmsw31ud_richtext.a
    libwxmsw31ud_xrc.a
    libwxmsw31ud_aui.a
    libwxmsw31ud_html.a
    libwxmsw31ud_adv.a
    libwxmsw31ud_core.a
    libwxbase31ud_xml.a
    libwxbase31ud_net.a
    libwxbase31ud.a
    libwxscintillad.a
    libwxtiffd.a
    libwxjpegd.a
    libwxpngd.a
    libwxzlibd.a
    libwxregexud.a
    libwxexpatd.a
    libwxmsw31ud_media.a
)

add_executable(${PROJECT_NAME} ${SRC_FILES})

target_link_libraries(
    ${PROJECT_NAME}
    ${WX_LIBS}
)
Community
  • 1
  • 1
J Vines
  • 182
  • 1
  • 16