CMake没有直接链接osx下的glfw



20160614:

我有MacPorts安装的glfw。sudo port install glfw我已经检查了/opt/local/lib/libglfw.dylib是否存在。

这是我的main.cpp的顶部标题:

#include <GLFW/glfw3.h> 

我的CMakeLists.txt(文件1):

cmake_minimum_required (VERSION 2.8)
project (t1)
include_directories(/opt/local/include)
link_directories(/opt/local/lib)
# find_library(MYGLFWLIB NAMES glfw HINTS /opt/local/lib NO_DEFAULT_PATH)
set(GLLIBS GL glfw glew)
add_executable(t1 main.cpp)
target_link_libraries(t1 ${GLLIBS})

在没有报告错误的cmake . && make之后,我通过./t1执行然后错误来了:

dyld: Library not loaded: lib/libglfw.3.dylib
Referenced from:    /Users/...../t1
Reason: image not found
[1]    13949 trace trap  ./t1

然后我使用otool -L t1来检查t1 中的库依赖性

/opt/local/lib/libGL.1.dylib (compatibility version 4.0.0, current version 4.0.0)
lib/libglfw.3.dylib (compatibility version 3.0.0, current version 3.2.0)
/opt/local/lib/libGLEW.1.13.0.dylib (compatibility version 1.13.0, current version 1.13.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

有人能告诉我为什么glfw链接不正确吗?

20160615:

修改我的CMakeLists.txt(文件2)后:

cmake_minimum_required (VERSION 2.8)
project (t1)
include_directories(/opt/local/include)
link_directories(/opt/local/lib)
find_library(GL_LIB GL HINTS /opt/local/lib )
find_library(GLFW_LIB glfw HINTS /opt/local/lib)
find_library(GLEW_LIB glew HINTS /opt/local/lib)
message(${GLFW_LIB})
message(${GLEW_LIB})
message(${GL_LIB})
add_executable(t1 main.cpp)
target_link_libraries(t1 ${GL_LIB} ${GLFW_LIB} ${GLEW_LIB})

我有两个osx设备(MacMini和MacBookPro),MacPorts和Xcode以及CMake和System的版本都是一样的:

Mac操作系统:10.11.5Mac端口2.3.4C制造商:3.5.2Xcode:7.3

CMakeLists的两个版本(上面的文件1和文件2)都可以在MacMini中工作,链接器工作正常。但当它出现在我的MacBookPro上时,glfw并没有很好地联系起来。

其他人也遇到了几乎相同的问题:

macports cmake使dyld库未加载

这个问题与系统变量有关吗?

经过几个小时的搜索,我发现了原因:glfw@3.2:install_name没有正确设置

set(GLLIBS GL glfw glew)

这不是你应该如何使用CMake。使用find_library

pkg_search_module(GLFW REQUIRED glfw3)
include_directories(${GLFW_INCLUDE_DIRS})
target_link_libraries(simple ${GLFW_LIBRARIES})

查看文档:http://www.glfw.org/docs/3.0/build.html

最新更新