我正在尝试构建一个源代码,在传递/修复了大量错误后,我陷入了一个我不知道如何解决的问题。我是构建源代码的新手,但是我试图搜索这个错误,虽然我不确定我是否正确实现了它们,但它们都没有用。 我在OSX 10.8.5上使用XCode 5.1.1
我正在努力制作一个cmake文件,但是75%我收到了这个错误(简要形式):
架构x86_64的未定义符号: “_glBegin”,引自: alembicHolderOverride.cpp.o中的AlembicHolderOverride :: draw(MHWRender :: MDrawContext const&,MUserData const *)
这是我所拥有的cmakelist的一部分:
# Fix to stop crash on OSX < 10.9
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.8)
# Compiler flags
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
# Disable some of the bullshit warnings MSVC wants to barf
add_definitions( "-W3 -MP -D_CRT_SECURE_NO_WARNINGS -wd4005 -wd4996 -wd4305 -wd4244 -nologo" )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
endif()
IF( "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin" )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++03 -stdlib=libstdc++ -framework OpenGL")
endif()
IF( "${CMAKE_SYSTEM_NAME}" MATCHES "Linux" )
add_definitions(-D_LINUX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -fvisibility=hidden -fPIC")
endif()
我非常感谢您提前提供任何帮助,如果Cmakelist构建标志的任何部分错误,请随时告诉我,因为我对此并不熟悉。
答案 0 :(得分:1)
您需要链接到OpenGL:
find_package(OpenGL REQUIRED)
...
add_(library|executable)(<your-target> ...)
...
target_include_directories(<your-target> PRIVATE ${OPENGL_INCLUDE_DIR})
target_link_libraries(<your-target> PRIVATE ${OPENGL_LIBRARIES})
(如果它是带有使用OpenGL的公共标题的库,则可能需要PUBLIC
链接)
或传统方式:
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
link_libraries(${OPENGL_LIBRARIES})
...
add_(library|executable)(<your-target> ...)