cmake - 使用带有“target_link_libraries”命令的生成器表达式中的列表(不需要的 -l 标志)
问题描述
我正在尝试使用生成器表达式为我的下游构建链接导入的库。(使用 cmake 3.11.1 顺便说一句)
由于 TARGET_LINK_LIBRARIES 中的生成器命令不接受空格,我发现我需要使用“JOIN”命令。然而,这似乎是在我生成的 ninja 文件中添加了一个不需要的 -l 标志,并破坏了构建。
# link dependencies
TARGET_LINK_LIBRARIES(TGT1
"$<JOIN:$<$<BOOL:${DOWNSTREAM_PIPELINE}>:${IMPORTED_LIBS_FOR_TGT1}>, >")
TARGET_LINK_LIBRARIES(TGT2
"$<JOIN:$<$<BOOL:${DOWNSTREAM_PIPELINE}>:${IMPORTED_LIBS_FOR_TGT2}>, >" $<TARGET_FILE:TGT1>)
我的 Ninja 文件中的结果是:
LINK_LIBRARIES = -llibModuleA libModuleB libModuleC ...
这里发生了什么?
感谢@StephenNewell 的提示。由于列表没有空格,我可以使用 BOOL 生成器表达式。我只是遇到了引号放错地方的问题。以下作品:
# link dependencies
TARGET_LINK_LIBRARIES(TGT1
"$<$<BOOL:${DOWNSTREAM_PIPELINE}>:${IMPORTED_LIBS_FOR_TGT1}>")
TARGET_LINK_LIBRARIES(TGT2
"$<$<BOOL:${DOWNSTREAM_PIPELINE}>:${IMPORTED_LIBS_FOR_TGT2}>" $<TARGET_FILE:TGT1>)
解决方案
推荐阅读
- android - How to make my 360 degree panoramic picture scrollable in all directions?
- javascript - 导航到当前页面时反应路由器滚动到顶部
- c# - C# Bytes from Textbox to Value
- mysql - Cannot install ruby MySQL gem on windows
- c - Convert string to uppercase with "for" cycle
- javascript - Some Javascript codes not working, only jquery codes
- jupyter-notebook - 如何通过本地机器上的远程服务器运行 jupyter notebook?
- c++ - Endless request for input when calling open()
- java - JavaFX Exported Runnable JAR Error, Error initializing QuantumRenderer, No toolkit found
- android - 动态检索 Firebase 数据库文本并将文本数据添加到卡片视图