为什么';Xcode是否识别我的库搜索路径?
我已经将为什么';Xcode是否识别我的库搜索路径?,xcode,linker,environment-variables,cmake,Xcode,Linker,Environment Variables,Cmake,我已经将LIBRARY\u SEARCH\u path设置为/opt/local/lib,并验证了有问题的库是否存在(我正在链接到GLEW): 但是Xcode给了我链接器错误 library not found for -lGLEW 我正在使用CMake生成Xcode项目,所以我不想显式地修改Xcode项目(如果有人建议将其添加为框架或类似的内容)。Xcode可以识别用户\头\搜索\路径精细(如中所示);为什么它在这里不起作用?Xcode可以在潜在的多个SDK上工作,因此,每当您定义这些类型的
LIBRARY\u SEARCH\u path
设置为/opt/local/lib
,并验证了有问题的库是否存在(我正在链接到GLEW
):
但是Xcode给了我链接器错误
library not found for -lGLEW
我正在使用CMake生成Xcode项目,所以我不想显式地修改Xcode项目(如果有人建议将其添加为框架或类似的内容)。Xcode可以识别
用户\头\搜索\路径
精细(如中所示);为什么它在这里不起作用?Xcode可以在潜在的多个SDK上工作,因此,每当您定义这些类型的东西(如HEADER\u SEARCH\u路径或LIBRARY\u SEARCH\u路径)时,当前SDK根目录都会前置到传递给链接器的实际路径
因此,实现这一点的一种方法是将您的目录添加到SDK中。例如,假设您正在使用Mac OS X 10.5 sdk进行构建,您可以添加opt dir:
ln -s /opt /Developer/SDKs/MacOSX10.5.sdk/opt
现在可以在系统上找到您的库
如果您不想这样做,那么您必须查看CMake,并找出如何让它为您的实际库生成库需求(我对CMake一无所知,所以我无法在这方面帮助您)。这也是为什么你会看到用户头搜索路径和头搜索路径之间的区别,这是你的另一个问题
作为另一个选项,您还可以使用其他生成变量指定此路径:
OTHER_LDFLAGS=-L/opt/local/lib
这将导致链接器搜索/opt/local/lib及其标准路径,并且不需要您生成不同的项目文件。是否可以将类似的内容添加到您的CMakeLists.txt
find_library(GLEW_LIB GLEW /opt/local/lib)
if(NOT ${GLEW_LIB})
message(FATAL_ERROR "Could not find GLEW")
endif()
target_link_libraries(myprogram ${GLEW_LIB} ...)
其中myprogram是需要与库链接的目标可执行文件的名称。你将替换。。。与您在该可执行文件上使用的其他库一起使用
这样,CMake将为您处理库路径详细信息
find_library(GLEW_LIB GLEW /opt/local/lib)
if(NOT ${GLEW_LIB})
message(FATAL_ERROR "Could not find GLEW")
endif()
target_link_libraries(myprogram ${GLEW_LIB} ...)