Я пытаюсь использовать выражения генератора для связи импортированных библиотек для моих последующих сборок.(используя 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>)