我正在编译wxWidgets的hello world示例:https://docs.wxwidgets.org/trunk/overview_helloworld.html在Windows上使用MingGW-w64及其mingw32-make,而我在使用它提供的预编译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中运行同一行时,它实际上可以成功编译。
[在尝试使用Makefile时,您是否还在使用“ git bash”终端?
关于Xav'
尝试在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(直接在终端中执行):仅first案例已成功编译。
Git-bash(使用mingw32-make):仅second情况已成功编译。
cmd(直接在终端中执行):只有second情况成功编译。
cmd(使用mingw32-make):仅second情况已成功编译。
结论:即使在git-bash下,我也认为mingw32-make使用“传统” Windows路径样式(反斜杠)。
更新
:我发现mingw32-make也支持前斜线,因此我可以改写为:
g++ -o hello -ID:/local/wxWidgets/lib/gcc810_x64_dll/mswu ...