我尝试使用CMake和Xcode链接到另一个库中的库。
这是任何图书馆的问题,但为了便于传达,请以zlib
为例。
这似乎适用于可执行文件,如下所示:
LINK_DIRECTORIES(${LIB_DIR}/zlib/build/)
ADD_EXECUTABLE(MY_EXECUTABLE ...
它会生成一个Xcode项目,其设置如下所示:
如您所见,$(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;
}
位,如上所示。
答案 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 paths和CMP0004 - Libraries linked may not have leading or trailing whitespace的文档中的一条说明:
但请注意,生成器表达式不会在OLD中使用 处理CMP0003或CMP0004