我正在使用 boost.python 构建应用程序。我想将每个 cpp 模块作为一个共享库。
我有一个 cpp 文件列表,如何循环使用 cpp 文件中的名称制作不同的子项目?
例如:
set(Script_srcs
Module1.cpp
Module2.cpp
Module3.cpp
)
some_cycle
add_library( {NAME} SHARED {PATH} )
谢谢。
最佳答案
你可以使用 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 )
关于c++ - cmake 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5298125/