использование списков в выражениях генератора с командой «target_link_libraries» (флаг -l нежелательный) - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь использовать выражения генератора для связи импортированных библиотек для моих последующих сборок.(используя cmake 3.11.1)

Поскольку команда генератора в TARGET_LINK_LIBRARIES не принимает пробелы, я обнаружил, что мне нужно использовать команду 'JOIN'.Похоже, это добавляет нежелательный флаг -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>)

результат в моем файле ниндзя:

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>)
...