Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 项目未链接GLFW_C++_Linux_Opengl_Makefile_Glfw - Fatal编程技术网

C++ 项目未链接GLFW

C++ 项目未链接GLFW,c++,linux,opengl,makefile,glfw,C++,Linux,Opengl,Makefile,Glfw,因此,我有一个具有以下结构的多个依赖项的项目: 依赖关系 -高兴 -GLFW -ImGui 发动机 沙箱 引擎包括依赖项,沙盒包括引擎 项目文件由premake5生成。 这可以在Windows下完美地编译和运行,但今天我尝试将其移植到linux。 我使用linux版本的premake生成了makefiles。 所有文件都成功编译,但当链接过程开始时,我收到以下错误: ===构建沙箱(调试)=== 链接沙盒 ../Engine/vendor/GLFW/bin/Debug-linux-x86_64/

因此,我有一个具有以下结构的多个依赖项的项目:

依赖关系
-高兴
-GLFW
-ImGui
发动机
沙箱

引擎包括依赖项,沙盒包括引擎

项目文件由premake5生成。 这可以在Windows下完美地编译和运行,但今天我尝试将其移植到linux。 我使用linux版本的premake生成了makefiles。 所有文件都成功编译,但当链接过程开始时,我收到以下错误:

===构建沙箱(调试)===
链接沙盒
../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a(context.o):在函数
\u glfwRefreshContextAttribs'中:
/home/netcode/Engine/Engine/vendor/GLFW/src/context.c:361:未定义的引用
\u glfwplatformgetts'
../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a(context.o):在函数
glfwMakeContextCurrent':
/home/netcode/Engine/Engine/vendor/GLFW/src/context.c:614:未定义的引用 ../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a(context.o):在函数
glfwGetCurrentContext'中:
/home/netcode/Engine/Engine/vendor/GLFW/src/context.c:638:未定义的引用
../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a(context.o):在函数
glfwSwapInterval'中:
/home/netcode/Engine/Engine/vendor/GLFW/src/context.c:664:未定义的引用
../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a(context.o):在函数
glfwExtensionSupported'中:
/home/netcode/Engine/Engine/vendor/GLFW/src/context.c:682:未定义的引用
\u glfwplatformgetts'

等等

这是最终的生成文件:

# Alternative GNU Make project makefile autogenerated by Premake

ifndef config
  config=debug
endif

ifndef verbose
  SILENT = @
endif

.PHONY: clean prebuild

SHELLTYPE := posix
ifeq (.exe,$(findstring .exe,$(ComSpec)))
    SHELLTYPE := msdos
endif

# Configurations
# #############################################

RESCOMP = windres
INCLUDES += -I../Engine/vendor/spdlog/include -I../Engine/src -I../Engine/vendor -I../Engine/vendor/glm -Isrc
FORCE_INCLUDE +=
ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES)
ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
LINKCMD = $(CXX) -o "$@" $(OBJECTS) $(RESOURCES) $(ALL_LDFLAGS) $(LIBS)
define PREBUILDCMDS
endef
define PRELINKCMDS
endef
define POSTBUILDCMDS
endef

ifeq ($(config),debug)
TARGETDIR = ../bin/Debug-linux-x86_64/Sandbox
TARGET = $(TARGETDIR)/Sandbox
OBJDIR = ../bin-int/Debug-linux-x86_64/Sandbox
DEFINES += -DENGINE_DEBUG
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -g
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -g -std=c++17
LIBS += ../bin/Debug-linux-x86_64/Engine/libEngine.a ../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a ../Engine/vendor/Glad/bin/Debug-linux-x86_64/Glad/libGlad.a ../Engine/vendor/imgui/bin/Debug-linux-x86_64/ImGui/libImGui.a -lXrandr -lXi -lGLEW -lGLU -lGL -lX11 -ldl -lpthread -lstdc++fs
LDDEPS += ../bin/Debug-linux-x86_64/Engine/libEngine.a ../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a ../Engine/vendor/Glad/bin/Debug-linux-x86_64/Glad/libGlad.a ../Engine/vendor/imgui/bin/Debug-linux-x86_64/ImGui/libImGui.a
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64

else ifeq ($(config),release)
TARGETDIR = ../bin/Release-linux-x86_64/Sandbox
TARGET = $(TARGETDIR)/Sandbox
OBJDIR = ../bin-int/Release-linux-x86_64/Sandbox
DEFINES += -DENGINE_RELEASE
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -O2
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -O2 -std=c++17
LIBS += ../bin/Release-linux-x86_64/Engine/libEngine.a ../Engine/vendor/GLFW/bin/Release-linux-x86_64/GLFW/libGLFW.a ../Engine/vendor/Glad/bin/Release-linux-x86_64/Glad/libGlad.a ../Engine/vendor/imgui/bin/Release-linux-x86_64/ImGui/libImGui.a -lXrandr -lXi -lGLEW -lGLU -lGL -lX11 -ldl -lpthread -lstdc++fs
LDDEPS += ../bin/Release-linux-x86_64/Engine/libEngine.a ../Engine/vendor/GLFW/bin/Release-linux-x86_64/GLFW/libGLFW.a ../Engine/vendor/Glad/bin/Release-linux-x86_64/Glad/libGlad.a ../Engine/vendor/imgui/bin/Release-linux-x86_64/ImGui/libImGui.a
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64 -s

else ifeq ($(config),dist)
TARGETDIR = ../bin/Dist-linux-x86_64/Sandbox
TARGET = $(TARGETDIR)/Sandbox
OBJDIR = ../bin-int/Dist-linux-x86_64/Sandbox
DEFINES += -DENGINE_DIST
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -O2
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -O2 -std=c++17
LIBS += ../bin/Dist-linux-x86_64/Engine/libEngine.a ../Engine/vendor/GLFW/bin/Dist-linux-x86_64/GLFW/libGLFW.a ../Engine/vendor/Glad/bin/Dist-linux-x86_64/Glad/libGlad.a ../Engine/vendor/imgui/bin/Dist-linux-x86_64/ImGui/libImGui.a -lXrandr -lXi -lGLEW -lGLU -lGL -lX11 -ldl -lpthread -lstdc++fs
LDDEPS += ../bin/Dist-linux-x86_64/Engine/libEngine.a ../Engine/vendor/GLFW/bin/Dist-linux-x86_64/GLFW/libGLFW.a ../Engine/vendor/Glad/bin/Dist-linux-x86_64/Glad/libGlad.a ../Engine/vendor/imgui/bin/Dist-linux-x86_64/ImGui/libImGui.a
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64 -s

else
  $(error "invalid configuration $(config)")
endif

# Per File Configurations
# #############################################


# File sets
# #############################################

OBJECTS :=

OBJECTS += $(OBJDIR)/Sandbox2D.o
OBJECTS += $(OBJDIR)/SandboxApp.o

# Rules
# #############################################

all: $(TARGET)
    @:

$(TARGET): $(OBJECTS) $(LDDEPS) | $(TARGETDIR)
    $(PRELINKCMDS)
    @echo Linking Sandbox
    $(SILENT) $(LINKCMD)
    $(POSTBUILDCMDS)

$(TARGETDIR):
    @echo Creating $(TARGETDIR)
ifeq (posix,$(SHELLTYPE))
    $(SILENT) mkdir -p $(TARGETDIR)
else
    $(SILENT) mkdir $(subst /,\\,$(TARGETDIR))
endif

$(OBJDIR):
    @echo Creating $(OBJDIR)
ifeq (posix,$(SHELLTYPE))
    $(SILENT) mkdir -p $(OBJDIR)
else
    $(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif

clean:
    @echo Cleaning Sandbox
ifeq (posix,$(SHELLTYPE))
    $(SILENT) rm -f  $(TARGET)
    $(SILENT) rm -rf $(OBJDIR)
else
    $(SILENT) if exist $(subst /,\\,$(TARGET)) del $(subst /,\\,$(TARGET))
    $(SILENT) if exist $(subst /,\\,$(OBJDIR)) rmdir /s /q $(subst /,\\,$(OBJDIR))
endif

prebuild: | $(OBJDIR)
    $(PREBUILDCMDS)

ifneq (,$(PCH))
$(OBJECTS): $(GCH) | $(PCH_PLACEHOLDER)
$(GCH): $(PCH) | prebuild
    @echo $(notdir $<)
    $(SILENT) $(CXX) -x c++-header $(ALL_CXXFLAGS) -o "$@" -MF "$(@:%.gch=%.d)" -c "$<"
$(PCH_PLACEHOLDER): $(GCH) | $(OBJDIR)
ifeq (posix,$(SHELLTYPE))
    $(SILENT) touch "$@"
else
    $(SILENT) echo $null >> "$@"
endif
else
$(OBJECTS): | prebuild
endif


# File Rules
# #############################################

$(OBJDIR)/Sandbox2D.o: src/Sandbox2D.cpp
    @echo $(notdir $<)
    $(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/SandboxApp.o: src/SandboxApp.cpp
    @echo $(notdir $<)
    $(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"

-include $(OBJECTS:%.o=%.d)
ifneq (,$(PCH))
  -include $(PCH_PLACEHOLDER).d
endif
#由Premake自动生成的备选GNU Make项目makefile
ifndef配置
config=debug
恩迪夫
冗长的
无声=@
恩迪夫
.假的:干净的预构建
SHELLTYPE:=posix
ifeq(.exe,$(findstring.exe,$(ComSpec)))
外壳类型:=msdos
恩迪夫
#配置
# #############################################
RESCOMP=windres
INCLUDES+=-I../Engine/vendor/spdlog/INCLUDES-I../Engine/src-I../Engine/vendor-I../Engine/vendor/glm-Isrc
武力包括+=
所有CPPFLAGS+=$(CPPFLAGS)-MMD-MP$(定义)$(包括)
所有_RESFLAGS+=$(RESFLAGS)$(定义)$(包括)
LINKCMD=$(CXX)-o“$@”$(对象)$(资源)$(所有标记)$(LIBS)
定义预构建CMD
恩德夫
定义预链接CMD
恩德夫
定义POSTBUILDCMDS
恩德夫
ifeq($(配置),调试)
TARGETDIR=../bin/Debug-linux-x86_64/Sandbox
TARGET=$(TARGETDIR)/Sandbox
OBJDIR=../bin int/Debug-linux-x86_64/Sandbox
定义+=-DENGINE\u调试
ALL_CFLAGS+=$(CFLAGS)$(ALL_CPPFLAGS)-m64-g
ALL_CXXFLAGS+=$(CXXFLAGS)$(ALL_CPPFLAGS)-m64-g-std=c++17
LIBS+=../bin/Debug-linux-x86_64/Engine/libEngine.a../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a../Engine/vendor/Glad/Debug-linux-x86_64/Glad/libGlad.a../Engine/vendor/imgui/Debug-linux-x86_64/imgui/libImGui.a-lXrandr-lXi-lGLEW-lGLU-lGLU-lGL-lX11-ldl-lpdc++-fs
LDDEPS+=../bin/Debug-linux-x86_64/Engine/libEngine.a../Engine/vendor/GLFW/bin/Debug-linux-x86_64/GLFW/libGLFW.a../Engine/vendor/Glad/Debug-linux-x86_64/Glad/libGlad.a../Engine/vendor/imgui/bin/Debug-linux-x86_64/imgui/libImGui.a
所有_LDFLAGS+=$(LDFLAGS)-L/usr/lib64-m64
else ifeq($(配置),发布)
TARGETDIR=../bin/Release-linux-x86_64/Sandbox
TARGET=$(TARGETDIR)/Sandbox
OBJDIR=../bin int/Release-linux-x86_64/Sandbox
定义+=-DENGINE\u发布
ALL_CFLAGS+=$(CFLAGS)$(ALL_CPPFLAGS)-m64-O2
ALL_CXXFLAGS+=$(CXXFLAGS)$(ALL_CPPFLAGS)-m64-O2-std=c++17
LIBS+=../bin/Release-linux-x86_64/Engine/libEngine.a../Engine/vendor/GLFW/bin/Release-linux-x86_64/GLFW/libGLFW.a../Engine/vendor/Glad-linux-x86_64/Glad/libGlad.a../Engine/vendor/imgui/Release-linux-x86_64/imgui/libImGui/libImGui.a-lXrandr-lXi-lGLEW-lGLU-lGLU-lGL-lX11-ldl-lpdc++-fs
LDDEPS+=../bin/Release-linux-x86_64/Engine/libEngine.a../Engine/vendor/GLFW/bin/Release-linux-x86_64/GLFW/libGLFW.a../Engine/vendor/Glad/Release-linux-x86_64/Glad/libGlad.a../Engine/vendor/imgui/bin/Release-linux-x86_64/imgui/libImGui.a
所有_LDFLAGS+=$(LDFLAGS)-L/usr/lib64-m64-s
else ifeq($(配置),dist)
TARGETDIR=../bin/Dist-linux-x86_64/Sandbox
TARGET=$(TARGETDIR)/Sandbox
OBJDIR=../bin int/Dist-linux-x86_64/Sandbox
定义+=-DENGINE\u距离
ALL_CFLAGS+=$(CFLAGS)$(ALL_CPPFLAGS)-m64-O2
ALL_CXXFLAGS+=$(CXXFLAGS)$(ALL_CPPFLAGS)-m64-O2-std=c++17
LIBS+=../bin/Dist-linux-x86_64/Engine/libEngine.a../Engine/vendor/GLFW/bin/Dist-linux-x86_64/GLFW/libGLFW.a../Engine/vendor/Glad/bin/Dist-linux-x86_64/Glad/libGlad.a../Engine/vendor/imgui/bin/Dist-linux-x86_64/imgui/libImGui/libImGui/libImGui.a-lXrandr-lXi-lGLEW-lGLU-lGL-lX11-ldl-thread-lstdc++
LDDEPS+=../bin/Dist-linux-x86_64/Engine/libEngine.a../Engine/vendor/GLFW/bin/Dist-linux-x86_64/GLFW/libGLFW.a../Engine/vendor/Glad/bin/Dist-linux-x86_64/Glad/libGlad.a../Engine/vendor/imgui/bin/Dist-linux-x86_64/imgui/libImGui.a
所有_LDFLAGS+=$(LDFLAGS)-L/usr/lib64-m64-s
其他的
$(错误“无效配置$(配置)”)
恩迪夫
#每文件配置
# #############################################
#文件集
# #############################################
对象:=
OBJECTS+=$(OBJDIR)/Sandbox2D.o
OBJECTS+=$(OBJDIR)/SandboxApp.o
#规则
# #############################################
全部:$(目标)
@:
$(目标):$(对象)$(LDDEPS)|$(目标目录)
$(预链接CMDS)
@回声连接沙盒
$(无提示)$(LINKCMD)
$(POSTBUILDCMDS)
$(TARGETDIR):
@echo创建$(TARGETDIR)
ifeq(posix,$(外壳类型))
$(静默)mkdir-p$(TARGETDIR)
其他的
$(无提示)mkdir$(subst/,\ \,$(TARGETDIR))
恩迪夫
$(OBJDIR):
@echo创建$(OBJDIR)
ifeq(posix,$(外壳类型))
$(静默)mkdir-p$(OBJDIR)
其他的
$(无提示)mkdir$(subst/,\ \,$(OBJDIR))
恩迪夫
清洁:
@回音