CMakeLists.txt配置 ​​- 简单但卡住 - 库未添加到生成的项目中

时间:2014-01-12 21:48:48

标签: linker include cmake libraries glew

我最初关注本教程: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

谢谢,

1 个答案:

答案 0 :(得分:2)

该库不在链接器的库搜索路径中。

target_link_libraries命令非常简单:它只是将所有参数传递给链接器,而不用担心是否存在任何这些库。

在您的情况下,GLFW_276库缺失(也可能是GLEW_190,因为错误发生在正在处理之前)。确保库实际安装在您的系统上,其文件名实际上与您在此处使用的名称相匹配(例如libGLFW_276.so)。

确认您拥有所需文件后,需要确保链接器能够找到它。如果文件不在其中一个标准目录中,请使用link_directories将其位置添加到搜索路径,或使用find_library获取库文件的完整路径,然后可以给出该文件到target_link_libraries