我最初关注本教程:http://www.opengl-tutorial.org/miscellaneous/building-your-own-c-application/ 大约一半之后,从“在项目中添加源文件”
我从我的CMakeLists.txt文件中创建了如下:
cmake_minimum_required (VERSION 2.6)
project (Cube_Project)
find_package(OpenGL REQUIRED)
add_executable(Cube
main.cpp
)
include_directories(
external/glfw-2.7.6/include/
external/glm-0.9.4.0/
external/glew-1.9.0/include/
.
)
set(ALL_LIBS
${OPENGL_LIBRARY}
GLFW_276
GLEW_190
)
target_link_libraries(Cube
${ALL_LIBS}
)
但是当我生成项目时,我收到了这个错误:
ld: library not found for -lGLFW_276
clang: error: linker command failed with exit code 1 (use -v to see invocation)
有什么想法吗?
我想也许我在set(....)部分没有使用正确的名字?我的三个库位于一个名为external的文件夹中,这是项目的顶层(即CMakeLists也在这里)。
如果有人想查看输出XCode项目结构的文件夹布局,我会放置项目的zip:http://heather.sh/OpenGL_Project.zip
谢谢,
答案 0 :(得分:2)
该库不在链接器的库搜索路径中。
target_link_libraries
命令非常简单:它只是将所有参数传递给链接器,而不用担心是否存在任何这些库。
在您的情况下,GLFW_276
库缺失(也可能是GLEW_190
,因为错误发生在正在处理之前)。确保库实际安装在您的系统上,其文件名实际上与您在此处使用的名称相匹配(例如libGLFW_276.so
)。
确认您拥有所需文件后,需要确保链接器能够找到它。如果文件不在其中一个标准目录中,请使用link_directories
将其位置添加到搜索路径,或使用find_library
获取库文件的完整路径,然后可以给出该文件到target_link_libraries
。