您可以使用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 )
Run Code Online (Sandbox Code Playgroud)
但是,不是从文件名中导出库名,为什么不以相反的方式工作呢?从所需的模块名称派生文件名,并在for循环中追加".cpp":
set( MyModules Module1 Module2 Module3 )
foreach( Mod ${MyModules} )
add_library( ${Mod} SHARED ${Mod}.cpp )
endforeach( Mod )
Run Code Online (Sandbox Code Playgroud)