从库中CMake link_directories

时间:2015-07-01 05:16:06

标签: xcode cmake

我尝试使用CMake和Xcode链接到另一个库中的库。 这是任何图书馆的问题,但为了便于传达,请以zlib为例。

这似乎适用于可执行文件,如下所示:

LINK_DIRECTORIES(${LIB_DIR}/zlib/build/)
ADD_EXECUTABLE(MY_EXECUTABLE ...

它会生成一个Xcode项目,其设置如下所示:

enter image description here

如您所见,$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)位被正确添加到zlib库路径。

但如果我尝试这样做:

LINK_DIRECTORIES(${LIB_DIR}/zlib/build/)
ADD_LIBRARY(MY_LIBRARY ...

zlib在将MY_EXECUTABLE

链接到MY_LIBRARY时永远不会与TARGET_LINK_LIBRARIES相关联

ADD_LIBRARY之后zlib允许我从MY_LIBRARY链接到zlib,但我必须指定完整路径,但这不会作为配置工作(调试,发布等)以及有效平台(iphoneos,iphonesimulator等)都是因素。

我想要做的是将$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)添加到Xcode Library搜索路径,并使用 String Selectvalue = camera_device_list_array_data.get(position).get(AppHelper.CAMERA_DEVICE_IP_ADDRESS); if (!Selectvalue .equals(null)) { int SelectPostion = camera_device_list_array_data.getPosition(Selectvalue); yourSpinner.setSelection(SelectPostion); SelectPostion = 0; } 位,如上所示。

1 个答案:

答案 0 :(得分:2)

将我的评论转化为答案

CMake确实支持使用generator expressions向多配置环境中的路径添加适当的配置(请参阅CMake - Accessing configuration parameters of multiple-configuration generators

target_link_libraries()的参数支持使用生成器表达式。因此,在您的情况下,您可以使用$<CONFIG>生成器表达式,如下所示:

TARGET_LINK_LIBRARIES(MY_LIBRARY ${LIB_DIR}/zlib/build/$<CONFIG>/...)

请注意 - 如果您可能更改了某些政策 - 来自target_link_libraries()有关政策CMP0003 - Libraries linked via full path no longer produce linker search pathsCMP0004 - Libraries linked may not have leading or trailing whitespace的文档中的一条说明:

  

但请注意,生成器表达式不会在OLD中使用   处理CMP0003或CMP0004