c++ 如何使用gcc编译imgui源文件

8ehkhllq  于 2023-03-25  发布在  其他
关注(0)|答案(2)|浏览(226)

如何用gcc编译imgui源文件
根据build_win32在一个例子中的repo

@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler.
@set OUT_DIR=Debug
@set OUT_EXE=example_win32_directx11
@set INCLUDES=/I..\.. /I..\..\backends /I "%WindowsSdkDir%Include\um" /I "%WindowsSdkDir%Include\shared" /I "%DXSDK_DIR%Include"
@set SOURCES=main.cpp ..\..\backends\imgui_impl_dx11.cpp ..\..\backends\imgui_impl_win32.cpp ..\..\imgui*.cpp
@set LIBS=/LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d11.lib d3dcompiler.lib
mkdir %OUT_DIR%
cl /nologo /Zi /MD %INCLUDES% /D UNICODE /D _UNICODE %SOURCES% /Fe%OUT_DIR%/%OUT_EXE%.exe /Fo%OUT_DIR%/ /link %LIBS%

前三行并不重要,因为它们定义了输出目录和输出可执行文件,下一行是我在Makefile中包含的INCLUDES,下一行是我也添加的源文件,但由于某种原因没有按预期工作

CC = g++
FILES =  main.cpp C:\\Users\\test\\Desktop\\imgui\\backend\\imgui_impl_dx11.cpp C:\\Users\\test\\Desktop\\imgui\\backend\\imgui_impl_win32.cpp C:\\Users\\test\\Desktop\\imgui\\backend\\imgui*.cpp
INCLUDES = -I C:\\Users\\test\\Desktop\\my-project\\Include  -ld3d11 -ld3dcompiler

build: $(FILES)
    $(CC) $(FILES) $(INCLUDES)

Includes文件夹包含文件夹backend中的所有头文件
这是运行命令make时得到的结果

make: *** No rule to make target 'C:\\Users\\test\\Desktop\\imgui\\backend\\imgui_impl_dx11.cpp', needed by 'build'.  Stop.

为什么我会得到这个错误?

4zcjmb1e

4zcjmb1e1#

这个答案更多的是感谢HolyBlackCat帮助我在将存储库克隆到我使用的桌面后使用MSYS2 shell在MINGW64环境中进行编译

export $IMGUI_DIR=C:/Users/test/Desktop/imgui

这使得最后一个命令更短,并为变量IMGUI_DIR提供了imgui repo next的路径
我们运行命令

g++  main.cpp $IMGUI_DIR/backends/imgui_impl_dx11.cpp $IMGUI_DIR/backends/imgui_impl_win32.cpp $IMGUI_DIR/imgui*.cpp -I $IMGUI_DIR -I $IMGUI_DIR/backends   -ld3d11 -ld3dcompiler -lgdi32  -ldwmapi

其中
main.cpp是您的代码(要使用的示例)
$IMGUI_DIR/imgui.cpp包括imgui的所有源文件
-I $IMGUI_DIR包括imgui文件夹中的头文件
-I $IMGUI_DIR/backends包括后端头文件
-ld3d11 -ld3dcompiler -lgdi32 -ldwmapi链接所需的Windows库
imgui工作

eivnm1vs

eivnm1vs2#

netrunner所说的在将命令更改为include之后有效

  • 静态-静态-libgcc-静态-libstdc ++
g++ -static -static-libgcc -static-libstdc++ $IMGUI_DIR/main.cpp $IMGUI_DIR/backends/imgui_impl_dx11.cpp $IMGUI_DIR/backends/imgui_impl_win32.cpp $IMGUI_DIR/imgui*.cpp -I $IMGUI_DIR -I $IMGUI_DIR/backends   -ld3d11 -ld3dcompiler -lgdi32  -ldwmapi

$IMGUI_DIR可以替换为任何示例或您自己的实现的main.cpp的路径

相关问题