2016-09-06 3 views
1

Можно ли установить флаг внутри функции cmake add_library, чтобы я уменьшил дублирующий код. напримерCmake add_library с флагом

add_library(somename SHARED 

    $<TARGET_OBJECTS:xxx_objs> 
    $<TARGET_OBJECTS:yyy_objs> 
    $<TARGET_OBJECTS:zzz_objs> 
    #if(INCLUDE_SOME_FLAG) 
    $<TARGET_OBJECTS:aaa_objs> 
    $<TARGET_OBJECTS:bbb_objs> 
    $<TARGET_OBJECTS:ccc_objs> 
    #endif(INCLUDE_SOME_FLAG) 
) 

Если я пытаюсь я получаю ошибку: «Не удается найти исходный файл:» Если удалить флаг он хорошо работает. Думаю, он думает, что флаг является исходным файлом, каким-то образом?

ответ

2
set(somename_objs 
    $<TARGET_OBJECTS:xxx_objs> 
    $<TARGET_OBJECTS:yyy_objs> 
    $<TARGET_OBJECTS:zzz_objs>) 
if (INCLUDE_SOME_FLAG) 
    list(APPEND somename_objs 
     $<TARGET_OBJECTS:aaa_objs> 
     $<TARGET_OBJECTS:bbb_objs> 
     $<TARGET_OBJECTS:ccc_objs>) 
endif() 
add_library(somename SHARED ${somename_objs}) 
Смежные вопросы