C++11 无法链接SDL/GLT/GLM Ubuntu
我实际上在我的虚拟机上使用openGL projet,但我需要openGL 4.5,所以我已经在我的笔记本电脑上安装了ubuntu(GTX 870M),它与4.5兼容(我向glxinfo查询)。但我的问题是在安装gcc、build-essential、libglew-dev、freelut3-dev、freelut3和SDL2之后。我无法生成我的项目,因为我在«SDL_WasInit»,«glBegin»上有未定义的引用等错误。。。。对于所有已安装的库 我尝试使用makefile,如:C++11 无法链接SDL/GLT/GLM Ubuntu,c++11,opengl,gcc,sdl,glut,C++11,Opengl,Gcc,Sdl,Glut,我实际上在我的虚拟机上使用openGL projet,但我需要openGL 4.5,所以我已经在我的笔记本电脑上安装了ubuntu(GTX 870M),它与4.5兼容(我向glxinfo查询)。但我的问题是在安装gcc、build-essential、libglew-dev、freelut3-dev、freelut3和SDL2之后。我无法生成我的项目,因为我在«SDL_WasInit»,«glBegin»上有未定义的引用等错误。。。。对于所有已安装的库 我尝试使用makefile,如: ifeq
ifeq "$(shell uname)" "Darwin"
LIBGL= -framework OpenGL
else
LIBGL= -lGLU -lGL
endif
CXXFLAGS += `pkg-config glew --cflags` `sdl2-config --cflags` -g -W -Wall -Wno-unused-parameter -Wno-deprecated-declarations
LDFLAGS += `pkg-config glew --libs` `sdl2-config --libs` $(LIBGL)
all : main.exe
run : main.exe
./main.exe
main.exe : main.cpp *.h
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o$@ main.cpp
sol : main_solution.exe
runs : main_solution.exe
./main_solution.exe
main_solution.exe : main_solution.cpp *.h
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ main_solution.cpp
clean :
rm -f *.o *.exe
cmake_minimum_required(VERSION 3.3)
project(src)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lglut -lGLU -lGL -lGLEW -lm -lSDL2 -lSDL2main -Wall -g")
set(SOURCE_FILES
"""ALL SOURCE FILES"""")
add_executable(src ${SOURCE_FILES})
使用cmakefile,例如:
ifeq "$(shell uname)" "Darwin"
LIBGL= -framework OpenGL
else
LIBGL= -lGLU -lGL
endif
CXXFLAGS += `pkg-config glew --cflags` `sdl2-config --cflags` -g -W -Wall -Wno-unused-parameter -Wno-deprecated-declarations
LDFLAGS += `pkg-config glew --libs` `sdl2-config --libs` $(LIBGL)
all : main.exe
run : main.exe
./main.exe
main.exe : main.cpp *.h
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o$@ main.cpp
sol : main_solution.exe
runs : main_solution.exe
./main_solution.exe
main_solution.exe : main_solution.cpp *.h
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ main_solution.cpp
clean :
rm -f *.o *.exe
cmake_minimum_required(VERSION 3.3)
project(src)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lglut -lGLU -lGL -lGLEW -lm -lSDL2 -lSDL2main -Wall -g")
set(SOURCE_FILES
"""ALL SOURCE FILES"""")
add_executable(src ${SOURCE_FILES})
此项目(cmakefile和makefile)在我的虚拟机上运行良好…我希望您能帮助我thx。在CMake中,您可以使用
target\u link\u库
指定要使用的库。通常,您希望使用find_package(…)
查找特定库的配置,然后使用它引入的变量进行链接
find_package(OpenGL)
add_executable(foo …)
target_link_libraries(foo ${OPENGL_gl_LIBRARY} …)
您应该查看
find_package
使用的cmake模块,查看它们配置的变量的名称。这些不是ld标志,而是LIB。而且你的LIB应该只在链接阶段通过。但这是我的虚拟机上的工作,因此配置我不明白为什么:/仅仅因为我可以制造一辆方轮汽车并不意味着我应该。你不应该把你的LIB和你的ld标志放在一起;这就像把你的源代码和你的编译器标记放在一起一样。还有,你为什么要使用freeglut和SDL2?是我的学校老师给我的projet,但我们需要处理opengl图形的freeglut和SDL。