cmake共享库

时间:2011-03-14 11:47:07

标签: c++ loops cmake

我正在使用boost.python构建应用程序。我想将每个cpp模块作为单个共享库。

我有一个cpp文件列表,如何循环使用名称取自 cpp 文件的不同子项目?

例如:

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

some_cycle
  add_library( {NAME} SHARED {PATH} )

感谢。

1 个答案:

答案 0 :(得分:7)

您可以使用foreach迭代源文件,并使用带有NAME_WE的函数get_filename_component来获取文件名,例如:

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 )

但是,不是从文件名中导出库名,为什么不以相反的方式工作呢?从所需的模块名称中导出文件名,并在for循环中附加“.cpp”:

set( MyModules Module1 Module2 Module3 ) 
foreach( Mod ${MyModules} )
    add_library( ${Mod} SHARED ${Mod}.cpp )
endforeach( Mod )