为什么';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} ...)