2015-03-24 2 views
2

Я хотел бы связать некоторые библиотеки только в сборках Debug, а не в Release. Использование флага debug в target_link_libraries, как упомянуто here, применяется только к библиотеке сразу после флага. Тем не менее, я хотел бы применить его ко всем библиотекам, указанных в переменной из find_package, например, так:CMake - Связывание различных библиотек для отладки и выпуска сборок с переменной из find_package

find_package(Cairomm) 
add_library(Paint Painter.cpp) 
target_link_libraries(Paint 
    debug ${Cairomm_LIBRARIES} 

Проверка полученного двоичного файла с ldd показывает, что первая библиотека, указанный в Cairomm_LIBRARIES действительно отсутствует, то следующее, однако связаны.

Могу ли я каким-либо образом применить флаг debug ко всем библиотекам переменной?

ответ

2

Используйте цикл:

foreach (_lib ${Cairomm_LIBRARIES}) 
    target_link_libraries(Paint debug ${_lib}) 
endforeach() 
+0

Спасибо большое, что сделал трюк. После некоторого рефакторинга я вытащил все связанные с Cairo вещи в своем собственном .cpp и создал для него отдельную целевую библиотеку, которую я мог бы использовать с отладкой в ​​target_link_library. – Daniel

Смежные вопросы