Как заставить Eclipse CDT работать с WxWidgets под windows? - PullRequest
0 голосов
/ 06 февраля 2020
  • wxWidgets-3.1.3
  • Eclipse IDE 4.14.0
  • Eclipse CDT 9.10.0.2019x (последние пакеты от 2/2/2020)
  • Windows 10 Pro

Я использую Eclipse в течение многих лет для PHP, Python, JavaScript и lua. Я, однако, новичок в C ++ и Eclipse CDT. У меня достаточно разумное владение синтаксисом и соглашением C ++, и я готов перейти к той причине, по которой я пришел на C ++, а именно GUI. Сначала я попробовал Code :: Blocks, который казался проще (мне нравятся мастера!), Но я действительно предпочел бы интегрированную среду разработки с интеграцией git, и я понял, что C :: B этого не было до того, как мне удалось получить сборник работает. Итак, вернемся к Eclipse.

Пока что я сделал следующее:

  • добавил путь к компилятору MinGW в% PATH%
  • , успешно скомпилировал wxWidgets 3.1. 3 с использованием SHARED = 0 UNICODE = 1 MONOLITHIC = 0 BUILD = release, эти изменения сделаны в% WXDIR% \ build \ msw \ config.g cc. Различные учебные пособия, которые я обнаружил, совершенно не согласны с этими параметрами, но различные ответы на людей с моей проблемой здесь и на других форумах в целом согласны с ними, и, за исключением BUILD, они являются значениями по умолчанию. Итак.
  • успешно скомпилировал тестовую программу из образцов / минимальных. Полученный исполняемый файл запускается без необходимости использования других DLL в этом же каталоге.

К сожалению, я застрял здесь. Существует множество уроков и сообщений на форуме, но я сталкиваюсь с одной или несколькими из следующих проблем:

  • Недоступно ie доступно. «Добавить ссылку в каталог wxWidgets», но хорошо, как мне это сделать, и вы имеете в виду основной каталог кода% WXDIR% или% WXDIR% \ lib или что?
  • Не работает. "Просто Файл-> Импорт-> Файловая система ->% WXDIR%" и нет. Действительно ли избавились от «не разрешенных» для НЕКОТОРЫХ ссылок в коде, вставленном из «минимального. cpp», но не во всех.
  • Явно ссылаются на версии IDE или Code из, о скажем, десять лет go и / или содержат инструкции, которые не могут быть выполнены в текущей версии.

В качестве альтернативы я бы порекомендовал другой набор инструментов GUI с доступными инструкциями для получения текущей версии самой работы с текущей версией Eclipse.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Я покажу, как скомпилировать минимальный образец wxWidgets с MinGW и eclipse. Прежде всего, я настоятельно рекомендую вам собрать как отладочную, так и выпускную версию библиотеки wxWidgets. Эти направления предполагают, что это так. Я не специалист по затмению, поэтому не могу гарантировать, что это лучшие направления. Эти указания работают для меня, но исправления и улучшения приветствуются.

Здесь много, много шагов. Но если вы получаете рабочий проект с минимальным образцом, вы можете скопировать проект и изменить файлы кода, чтобы использовать его для дальнейших проектов.

Прежде чем мы что-то еще сделаем, определите переменную среды WXWIN в eclipse если это еще не определено. В меню выберите Window-> Preferences-> C / C ++ -> Build-> Environment и нажмите кнопку добавления, чтобы добавить переменную.

enter image description here

Самый простой способ создать минимальный пример, который поставляется с библиотекой, - это использовать командную строку. Для этого просто перейдите в папку WXWIN \ samples \ minimal и введите точно такую ​​же команду, которую вы использовали для создания библиотеки. Поскольку приведенная выше команда была mingw32-make -f makefile.gcc SHARED=0 UNICODE=1 MONOLITHIC=0 BUILD=release, это произойдет, если в оболочке будут выполняться следующие команды:

windres --use-temp-file -i../../samples/sample.rc -ogcc_mswu\minimal_sample_rc.o    --define __WXMSW__   --define NDEBUG    --define _UNICODE --include-dir .\..\..\lib\gcc_lib\mswu --include-dir ./../../include  --include-dir .  --include-dir ./../../samples --define NOPCH
g++ -c -o gcc_mswu\minimal_minimal.o  -O2 -mthreads  -DHAVE_W32API_H -D__WXMSW__   -DNDEBUG    -D_UNICODE -I.\..\..\lib\gcc_lib\mswu -I.\..\..\include  -W -Wall -I.  -I.\..\..\samples -DNOPCH   -Wno-ctor-dtor-privacy   -MTgcc_mswu\minimal_minimal.o -MFgcc_mswu\minimal_minimal.o.d -MD -MP minimal.cpp
g++ -o gcc_mswu\minimal.exe @gcc_mswu\minimal.exe.rsp   -mthreads -L.\..\..\lib\gcc_lib -Wl,--subsystem,windows -mwindows    -lwxmsw31u_core  -lwxbase31u    -lwxtiff -lwxjpeg -lwxpng   -lwxzlib -lwxregexu -lwxexpat   -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lwsock32 -lwininet -loleacc -luxtheme

Если мы сделаем ту же команду с build=debug, вместо этого мы получим аналогичные команды только с несколько отличий:

windres --use-temp-file -i../../samples/sample.rc -ogcc_mswud\minimal_sample_rc.o    --define __WXMSW__       --define _UNICODE --include-dir .\..\..\lib\gcc_lib\mswud --include-dir ./../../include  --include-dir .  --include-dir ./../../samples --define NOPCH
g++ -c -o gcc_mswud\minimal_minimal.o -g -O0 -mthreads  -DHAVE_W32API_H -D__WXMSW__       -D_UNICODE -I.\..\..\lib\gcc_lib\mswud -I.\..\..\include  -W -Wall -I.  -I.\..\..\samples -DNOPCH   -Wno-ctor-dtor-privacy   -MTgcc_mswud\minimal_minimal.o -MFgcc_mswud\minimal_minimal.o.d -MD -MP minimal.cpp
g++ -o gcc_mswud\minimal.exe @gcc_mswud\minimal.exe.rsp  -g -mthreads -L.\..\..\lib\gcc_lib -Wl,--subsystem,windows -mwindows    -lwxmsw31ud_core  -lwxbase31ud    -lwxtiffd -lwxjpegd -lwxpngd   -lwxzlibd -lwxregexud -lwxexpatd   -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lwsock32 -lwininet -loleacc -luxtheme

Чтобы построить пример с помощью eclipse, мы хотим, чтобы он выполнял примерно те же команды, учитывая небольшие различия между конфигурациями отладки и выпуска. Выберите Файл-> Создать-> Проект C / C ++-> Управляемая сборка C ++. Введите имя проекта, выберите MinGW G CC, убедитесь, что тип проекта - Исполняемый / Пустой проект, и нажмите кнопку завершения sh.

enter image description here

Теперь добавьте файл в проект. Вы можете либо

  1. Выбрав Файл-> Новый-> Исходный файл, ввести имя файла, такое как «минимальный. cpp» или как хотите, чтобы он назывался, и нажать «Fini * 1248». *. Новый файл автоматически откроется в затмении. Выберите и удалите все содержимое. В текстовом редакторе откройте файл WXWIN \ samples \ minimal \ minimal. cpp, выберите и скопируйте все содержимое, вставьте его в файл, только что созданный в eclipse, и сохраните файл.
  2. File-> Импорт-> Общие-> Файловая система. Нажмите следующую кнопку. Затем выберите \ samples \ minimal для каталога. Затем выберите файл минимальный. cpp из списка файлов, которые это вызывает. Наконец, нажмите кнопку Fini sh.

В любом случае, в проекте должен быть файл с именем minimal. cpp. Чтобы создать этот файл, необходимо изменить несколько настроек. В меню выберите Проект-> Свойства-> Сборка C / C ++-> Настройки

  • Для компилятора G CC C ++:

    • Для препроцессора,
      • для всех конфигураций добавить __WXMSW__, _UNICODE, HAVE_W32API_H и NOPCH.
      • для конфигурации выпуска добавить NDEBUG enter image description here
    • Для включений
      • для всех конфигураций добавить ${WXWIN}\include
      • для конфигурации отладки, добавьте ${WXWIN}\lib\gcc_lib\mswud
      • для конфигурации выпуска, добавьте ${WXWIN}\lib\gcc_lib\mswu
    • Для оптимизации
      • для конфигурации выпуска выберите Optimize more (-O2)
    • Для отладки
      • для конфигурации отладки выберите Уровень отладки Default (-g)
    • Для Разное
      • для всех конфигураций, добавьте -mthreads -W -Wno-ctor-dtor-privacy в конце поля «Другие флаги».
  • Для MinGW C ++ Linker:

    • Для библиотек,
      • для конфигурации отладки:
        • для библиотек, добавьте wxmsw31ud_core, wxbase31ud, wxtiffd, wxjpegd, wxpngd, wxzlibd, wxregexud и wxexpatd
      • для конфигурации выпуска:
        • для библиотек, добавьте все следующее: wxmsw31u_core, wxbase31u, wxtiff, wxjpeg, wxpng, wxzlib, * 112 3 * и wxexpat
      • для всех конфигураций
        • для библиотек, добавьте все следующие: kernel32, user32, gdi32, comdlg32, winspool, winmm, shell32, shlwapi, comctl32, ole32, oleaut32, uuid, rpcrt4, advapi32, version, wsock32, wininet, oleacc и uxtheme.
        • для пути поиска в библиотеке, add ${WXWIN}\lib\gcc_lib
      • note : с MinGW иногда важен порядок библиотек, а библиотеки с именами, начинающимися с "wx", используются в конфигурациях отладки и выпуска должен быть указан первым. Вы можете использовать стрелки вверх и вниз, чтобы изменить порядок в случае необходимости. enter image description here
    • Для Miscelanious:
      • для всех конфигураций
        • для флагов liker, добавьте -mthreads -mwindows
        • для других параметров (-Xlinker), добавьте --subsystem=windows.
      • для конфигурации отладки,
        • для флагов liker, добавьте -g к существующей содержимое.

Конфигурации отладки и выпуска будут созданы, но приложение еще не завершено. Первое, что было сделано при создании минимального приложения в командной строке:

windres --use-temp-file ...

Согласно этой ссылке , eclipse просто не поддерживает создание файлов ресурсов, поэтому нам нужно обработать это вручную ,

  1. Скопируйте файлы WXWIN \ samples \ sample.r c и WXWIN \ samples \ sample.ico в папку проекта. (Папка проекта - это папка, содержащая минимальный файл. cpp, созданный ранее). Кроме того, вы можете использовать File-> Import-> ... для импорта файлов в проект.
  2. Now go назад Project-> Properties-> C / C ++ Build-> Settings- > Этапы сборки.

    • Для шагов предварительной сборки
      • для конфигурации отладки введите windres --use-temp-file -i"${ProjDirPath}/sample.rc" -o"${CWD}\minimal_sample_rc.o" --define __WXMSW__ --define _UNICODE --include-dir ${WXWIN}\lib\gcc_lib\mswud --include-dir ${WXWIN}\include --define NOPCH
      • для конфигурации выпуска введите windres --use-temp-file -i"${ProjDirPath}\sample.rc" -o${CWD}\minimal_sample_rc.o --define __WXMSW__ --define NDEBUG --define _UNICODE --include-dir ${WXWIN}\lib\gcc_lib\mswu --include-dir ${WXWIN}\include --define NOPCH enter image description here
  3. Затем вернитесь на вкладку «Настройки инструмента»:

    • Для MinGW C ++ Linker:
      • Для Разного,
        • для всех конфигураций
          • для Других объектов, добавьте ${CWD}\minimal_sample_rc.o enter image description here

Эти 2 дополнительных шага заставят eclipse скомпилировать файл ресурсов и связать ресурсы с конечным исполняемым файлом.

0 голосов
/ 07 февраля 2020

Итак, вы начинаете с совершенно нового проекта для C ++.

Затем вы добавляете туда исходный код для минимального примера.

Затем вы открываете свойства проекта, открываете "C ++ Build" - > «Настройки» и в разделе «Компилятор C ++» -> «Каталоги» вы добавляете все включаемые каталоги.

Затем вы go добавляете в «C ++ Linker» -> «Библиотеки» и добавляете библиотеки и Путь к ним.

Дайте нам знать, если у вас все еще есть проблемы?

...