Невозможно создать новый wxWidgets. Что я должен делать?

Я чувствую себя немного глупо, но я не могу создавать новые wxWidgets. Я хочу использовать codelite + mingw + wxWidgets, поэтому я загружаю последние версии:

CodeLite 9.1.3 ( http://downloads.codelite.org/downloads.php?windows_weekly_64)

Установщик заставляет меня загрузить установку TDM-GCC-64 и установить ее.

Затем я скачал wxWidgets-3.1.0 ( https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxMSW-3.1.0-Setup.exe)

Codelite обнаружил компилятор, теперь я должен создать wxWidgets, но страницы, для которых я гуглил (wxW wiki, документы codelite и т. Д.), Ссылаются на папки и файлы, которые не существуют. Все установлено в папках по умолчанию, и я не noob ПК, хотя, возможно, слишком используется для сред, таких как C++Builder и т. Д.

Что мне теперь делать?


ОБНОВИТЬ

Извините, я не могу быть ясным. Позвольте мне попробовать еще раз с выводом:

C:\wxWidgets-3.1.0\build\msw>mingw32-make -j8 -f Makefile.gcc SHARED=1 UNICODE=1 BUILD=release VENDOR=cl CXXFLAGS="-fno-keep-inline-dllexport -std=c++11" MONOLITHIC=1
if not exist gcc_mswudll mkdir gcc_mswudll
if not exist ..\..\lib\gcc_dll mkdir ..\..\lib\gcc_dll
if not exist ..\..\lib\gcc_dll\mswu\wx\setup.h copy ..\..\include\wx\msw\setup.h ..\..\lib\gcc_dll\mswu\wx\setup.h
gcc -c -o gcc_mswudll\wxregex_regcomp.o  -O2 -mthreads  -DHAVE_W32API_H -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -D__WXMSW__  -D_UNICODE   -MTgcc_mswudll\wxregex_regcomp.o -MFgcc_mswudll\wxre
gex_regcomp.o.d -MD -MP ../../src/regex/regcomp.c
Impossibile trovare il percorso specificato.
        0 file copiati.
Makefile.gcc:5728: recipe for target '..\..\lib\gcc_dll\mswu\wx\setup.h' failed
mingw32-make: *** [..\..\lib\gcc_dll\mswu\wx\setup.h] Error 1
mingw32-make: *** Waiting for unfinished jobs....
In file included from ..\..\include/wx/defs.h:20:0,
                 from ../../src/regex/regcustom.h:39,
                 from ../../src/regex/regguts.h:38,
                 from ../../src/regex/regcomp.c:33:
..\..\include/wx/platform.h:136:22: fatal error: wx/setup.h: No such file or directory
 #include "wx/setup.h"
                      ^
compilation terminated.
Makefile.gcc:5778: recipe for target 'gcc_mswudll\wxregex_regcomp.o' failed
mingw32-make: *** [gcc_mswudll\wxregex_regcomp.o] Error 1

Я могу ошибаться, но мне кажется, что эти две строки

if not exist ..\..\lib\gcc_dll mkdir ..\..\lib\gcc_dll
if not exist ..\..\lib\gcc_dll\mswu\wx\setup.h copy ..\..\include\wx\msw\setup.h ..\..\lib\gcc_dll\mswu\wx\setup.h

показывает, что есть проблема.

Теперь я сам создал каталог и скопировал в него файл setup.h. У меня дома он все еще не собирался, но я не могу вспомнить, почему сейчас, в офисе, он начинает собираться, но на этом все и закончилось.:

......
g++ -c -o gcc_mswudll\wxscintilla_LexCOBOL.o  -O2 -mthreads  -DHAVE_W32API_H -DNDEBUG -I..\..\src\stc\scintilla\include -I..\..\src\stc\scintilla\lexlib -I..\..\src\stc\scintilla\src -D__WX__ -DSCI_LE
XER -DLINK_LEXERS -I..\..\lib\gcc_dll\mswu -I..\..\include  -D__WXMSW__   -D_UNICODE    -fno-keep-inline-dllexport -std=c++11 -MTgcc_mswudll\wxscintilla_LexCOBOL.o -MFgcc_mswudll\wxscintilla_LexCOBOL.
o.d -MD -MP ../../src/stc/scintilla/lexers/LexCOBOL.cxx
In file included from c:\sviluppo\tools\mingw\lib\gcc\mingw32\4.8.1\include\c++\cmath:44:0,
                 from c:\sviluppo\tools\mingw\lib\gcc\mingw32\4.8.1\include\c++\random:38,
                 from c:\sviluppo\tools\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algo.h:65,
                 from c:\sviluppo\tools\mingw\lib\gcc\mingw32\4.8.1\include\c++\algorithm:62,
                 from ../../src/stc/scintilla/lexers/LexBibTeX.cxx:18:
c:\sviluppo\tools\mingw\include\math.h: In function 'float hypotf(float, float)':
c:\sviluppo\tools\mingw\include\math.h:635:30: error: '_hypot' was not declared in this scope
 { return (float)(_hypot (x, y)); }
                              ^
g++ -c -o gcc_mswudll\wxscintilla_LexCoffeeScript.o  -O2 -mthreads  -DHAVE_W32API_H -DNDEBUG -I..\..\src\stc\scintilla\include -I..\..\src\stc\scintilla\lexlib -I..\..\src\stc\scintilla\src -D__WX__ -
DSCI_LEXER -DLINK_LEXERS -I..\..\lib\gcc_dll\mswu -I..\..\include  -D__WXMSW__   -D_UNICODE    -fno-keep-inline-dllexport -std=c++11 -MTgcc_mswudll\wxscintilla_LexCoffeeScript.o -MFgcc_mswudll\wxscint
illa_LexCoffeeScript.o.d -MD -MP ../../src/stc/scintilla/lexers/LexCoffeeScript.cxx
Makefile.gcc:6183: recipe for target 'gcc_mswudll\wxscintilla_LexBibTeX.o' failed
mingw32-make: *** [gcc_mswudll\wxscintilla_LexBibTeX.o] Error 1
mingw32-make: *** Waiting for unfinished jobs....

C:\wxWidgets-3.1.0\build\msw>

Итак, мы все еще не собираем wxWidgets.


ОБНОВЛЕНИЕ:

попытался сделать отладочную сборку, как предложено в ответе. это вывод:

C:\wxWidgets-3.1.0\build\msw> mingw32-make -j8 -f Makefile.gcc SHARED=1 UNICODE=
1 BUILD=debug VENDOR=cl CXXFLAGS="-fno-keep-inline-dllexport -std=c++11" MONOLIT
HIC=1
if not exist gcc_mswuddll mkdir gcc_mswuddll
if not exist ..\..\lib\gcc_dll\mswud mkdir ..\..\lib\gcc_dll\mswud
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 -DNDE
BUG -I..\..\include -I..\..\lib\gcc_dll\mswud -D__WXMSW__  -D_UNICODE   -MTgcc_m
swuddll\wxregex_regcomp.o -MFgcc_mswuddll\wxregex_regcomp.o.d -MD -MP ../../src/
regex/regcomp.c
Impossibile trovare il percorso specificato.
        0 file copiati.
Makefile.gcc:5728: recipe for target '..\..\lib\gcc_dll\mswud\wx\setup.h' failed

mingw32-make: *** [..\..\lib\gcc_dll\mswud\wx\setup.h] Error 1
mingw32-make: *** Waiting for unfinished jobs....
In file included from ..\..\include/wx/defs.h:20:0,
                 from ../../src/regex/regcustom.h:39,
                 from ../../src/regex/regguts.h:38,
                 from ../../src/regex/regcomp.c:33:
..\..\include/wx/platform.h:136:22: fatal error: wx/setup.h: No such file or dir
ectory
compilation terminated.
Makefile.gcc:5778: recipe for target 'gcc_mswuddll\wxregex_regcomp.o' failed
mingw32-make: *** [gcc_mswuddll\wxregex_regcomp.o] Error 1

Файл там, так что я не знаю, в чем проблема...

C:\wxWidgets-3.1.0\build\msw>dir ..\..\src\regex\regcomp.*
 Il volume nell'unità C è 1TBWD-1-WIN7 64
 Numero di serie del volume: A26D-1E3B

 Directory di C:\wxWidgets-3.1.0\src\regex

28/02/2016  22:33            59.702 regcomp.c
               1 File         59.702 byte
               0 Directory  74.986.561.536 byte disponibili

C:\wxWidgets-3.1.0\build\msw>

4 ответа

Решение

Установщик заставляет меня загрузить установку TDM-GCC-64 и установить ее.

CodeLite предлагает...

Что мне теперь делать?

Создайте wxWidgets, как это:

После того, как вы создали wxWidgets, вам нужно установить 2 переменные среды в CodeLite из: (Настройки-> Переменные среды):

WXCFG=gcc_dll\mswu WXWIN=\path\to\wxWidgets

Если вы попытаетесь построить Debug Конфигурируя свой проект в CodeLite, вы должны сделать ОДИН из следующего:

Построить debug версия wxWidgets (это то, что CodeLite будет искать)

ИЛИ ЖЕ

Удалить --debug флаг из опций компилятора и компоновщика:

  1. Настройки проекта-> Компилятор-> Параметры компилятора C++ и удалите часть, которая говорит --debug=yes или просто --debug
  2. Настройки проекта-> Линкер-> Параметры линкера и удалите часть, которая говорит --debug=yes или просто --debug

РЕДАКТИРОВАТЬ: обновить ссылку на страницу вики CodeLite

EDIT2: добавлено PATH инструкция к ответу

EDIT3: добавлены инструкции о том, как установить переменные среды WXCFG и WXWIN

Эран

На сегодняшний день при сборке забывают сделать две директории. Решение состоит в том, чтобы сделать их самостоятельно перед сборкой.

Поэтому мое решение - перейти в папку wxWidget и набрать:

C:\wxWidgets-3.1.0>mkdir lib\gcc_dll\mswu\wx\
C:\wxWidgets-3.1.0>copy include\wx\msw\setup.h lib\gcc_dll\mswu\wx\setup.h

В баге есть ошибка makefile.gcc при использовании параллельного make (т.е. с -j8). Обходной путь должен сделать

mingw32-make <all the same options> setup_h

Сначала следует обычная команда make. Другой альтернативой является использование сборки на основе конфигурации, которая не страдает от этой проблемы.

Проблема компиляции с _hypot() происходит из-за ошибки компилятора, и мы попытались обойти ее в этом коммите, но, видимо, этого было недостаточно. Вам следует сообщить о проблеме с более подробной информацией, в том числе о версии используемого вами компилятора и опциях, переданных для создания.

У меня была похожая проблема с использованием этой команды

mingw32-make -j8 -f Makefile.gcc SHARED=1 UNICODE=1 BUILD= выпуск VENDOR=cl CXXFLAGS="-fno-keep-inline-dllexport -std= C++11" MONOLITHIC=1

Проблема в -j8 который учитывает количество физических процессоров до начала процесса сборки.

Пытаться -jN (заменить N на значение NUMBER_OF_PROCESSORS)

mingw32-make не учитывает фактическое количество физических процессоров, гиперпоточных или виртуальных процессоров. Однако если на вашей машине меньше назначенных физических процессоров, это вызывает ошибку.

Вы также можете попробовать положить просто -j в поле make arguments. Это говорит Make, чтобы порождать как можно больше процессов компиляции, если у вас достаточно оперативной памяти и процессора для этого, это должно быть быстрее, чем одна компиляция.

Я успешно пробовал с -j4 на i7, который имеет 4 физических процессора.

(Примечание: при включенной гиперпоточности i7 показывает 8 виртуальных процессоров)

Нечто подобное упоминается здесь Ориентом

Лучшее объяснение Брендана Шанкса упоминается здесь.

Другие вопросы по тегам