架构x86_64的未定义符号:“_ glBegin”

时间:2015-07-16 20:26:04

标签: macos opengl cmake makefile undefined

我正在尝试构建一个源代码,在传递/修复了大量错误后,我陷入了一个我不知道如何解决的问题。我是构建源代码的新手,但是我试图搜索这个错误,虽然我不确定我是否正确实现了它们,但它们都没有用。 我在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构建标志的任何部分错误,请随时告诉我,因为我对此并不熟悉。

1 个答案:

答案 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> ...)