cmake разделяет библиотеки - PullRequest
0 голосов
/ 14 марта 2011

Я создаю приложение с boost.python. Я хочу сделать каждый cpp-модуль отдельной библиотекой.

У меня есть список cpp-файлов, как сделать в цикле разные подпроекты с именем, взятым из cpp файла?

Например:

set(Script_srcs
    Module1.cpp
    Module2.cpp
    Module3.cpp
)

some_cycle
  add_library( {NAME} SHARED {PATH} )

Спасибо.

1 Ответ

7 голосов
/ 14 марта 2011

Вы можете использовать foreach для перебора исходных файлов и использовать функцию get_filename_component с NAME_WE, чтобы получить только имя файла, что-то вроде:

set(Script_srcs Module1.cpp Module2.cpp Module3.cpp )

foreach( f ${Script_srcs} )
    get_filename_component( ff ${f} NAME_WE )
    add_library( ${ff} SHARED ${f} )
endforeach( f )

Но вместо того, чтобы извлекать имена библиотек из имен файлов, почему бы не работать наоборот? Получите ваши имена файлов из желаемых имен модулей и добавьте ".cpp" в цикл for:

set( MyModules Module1 Module2 Module3 ) 
foreach( Mod ${MyModules} )
    add_library( ${Mod} SHARED ${Mod}.cpp )
endforeach( Mod )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...