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