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

Linker CMakeLists.txt配置-简单但卡住-库未添加到生成的项目中,linker,include,cmake,libraries,glew,Linker,Include,Cmake,Libraries,Glew,我最初遵循本教程: 就在大约一半之后,从这里开始写“在项目中添加源文件” 我根据此文件创建了我的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/includ

我最初遵循本教程: 就在大约一半之后,从这里开始写“在项目中添加源文件”

我根据此文件创建了我的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)
有什么想法吗

我想也许我在集合(…)部分没有使用正确的名字?我的三个lib位于名为external的文件夹中,该文件夹是项目的顶层(即CMakeLists也在这里)

如果有人想查看output XCode项目结构的文件夹布局,我会放一个项目的zip文件:


谢谢,

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

target\u link\u libraries
命令非常简单:它只是将所有参数传递给链接器,而不考虑这些库是否确实存在

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


验证是否具有所需文件后,需要确保链接器能够找到该文件。如果文件不在其中一个标准目录中,请使用将其位置添加到搜索路径,或获取库文件的完整路径,然后可以将该路径提供给
target\u link\u libraries

如果库是动态库(.so,not.a),则可执行文件也需要能够找到库。如果库不在典型的系统范围库目录中,有两种方法可以让它知道库在哪里:在运行时将LD_library_PATH环境变量设置为正确的目录,或者在链接期间烘焙到正确的目录(请参阅man LD://^*-rpath)。