2011-03-14 185 views
0

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

我有一个cpp文件列表,如何在周期不同的子项目中取名为cpp文件?

例如:

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

some_cycle 
    add_library({NAME} SHARED {PATH}) 

感谢。

回答

7

你可以使用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) 

但是,而不是获得从文件名库名,为什么不用另一种方式工作?从所需的模块名称中导出文件名并在for循环中追加“.cpp”:

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