Включить проблему пути при компиляции приложения wxWidgets - PullRequest
0 голосов
/ 27 апреля 2020

Я сейчас компилирую пример hello world для wxWidgets: https://docs.wxwidgets.org/trunk/overview_helloworld.html с использованием MingGW-w64 и его mingw32-make на windows, и я использую скомпилированные Windows двоичные файлы он обеспечивает.

Я уже успешно скомпилировал, используя

g++ -o hello -I/d/local/wxWidgets/lib/gcc810_x64_dll/mswu -I/d/local/wxWidgets/include -L/d/local/wxWidgets/lib/gcc810_x64_dll hello.cpp -lwxbase31u -lwxmsw31u_core

(я запускаю этот git - bash), и он также может выполняться нормально.

Но когда я копирую ту же строку в makefile, как это:

all: hello
hello: hello.cpp
    g++ -o hello -I/d/local/wxWidgets/lib/gcc810_x64_dll/mswu -I/d/local/wxWidgets/include -L/d/local/wxWidgets/lib/gcc810_x64_dll hello.cpp -lwxbase31u -lwxmsw31u_core

и запускаю с mingw32-make.exe в терминале, эта ошибка произошла:

hello.cpp:3:10: fatal error: wx/wxprec.h: No such file or directory
#include <wx/wxprec.h>
         ^~~~~~~~~~~~~
compilation terminated.
mingw32-make: *** [makefile:3: hello] Error 1

Я не уверен, что это проблема с включением пути, потому что он на самом деле успешно компилируется, когда я запускаю ту же строку в терминале directlty.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

После попытки выполнения в cmd и git - bash несколько раз. Я обнаружил, что это, вероятно, проблема стиля пути. Я попробовал 2 случая спецификации пути ниже:

Первый:

g++ -o hello -I/d/local/wxWidgets/lib/gcc810_x64_dll/mswu -I/d/local/wxWidgets/include -L/d/local/wxWidgets/lib/gcc810_x64_dll hello.cpp -lwxbase31u -lwxmsw31u_core

Второй:

g++ -o hello -ID:\local\wxWidgets\lib\gcc810_x64_dll\mswu -ID:\local\wxWidgets\include -LD:\local\wxWidgets\lib\gcc810_x64_dll hello.cpp -lwxbase31u -lwxmsw31u_core

Git - bash (выполнить в терминале напрямую) : только первый регистр успешно скомпилирован.

Git - bash (с использованием mingw32-make): только второй регистр успешно скомпилирован.

cmd (выполнить в терминале напрямую): только второй регистр успешно скомпилирован.

cmd (с использованием mingw32-make): только второй регистр успешно скомпилирован.

Вывод: я думаю, что mingw32-make использует «традиционный» стиль пути Windows (backsla sh), даже при git - bash.

Обновление :

Я обнаружил, что mingw32-make также поддерживает forword sla sh, поэтому я могу переписать его так:

g++ -o hello -ID:/local/wxWidgets/lib/gcc810_x64_dll/mswu ...

Так что я думаю, что лучше использовать относительный путь в make-файле, чтобы предотвратить это ( D: ) в пути, а также более переносимый (unix / linux также использует backsla sh).

0 голосов
/ 27 апреля 2020

Вы также используете терминал "git bash", когда пытаетесь использовать Makefile?

С уважением, Xav '

...