c++ - cmake 共享库

标签 c++ loops cmake

我正在使用 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/

相关文章:

c++ - 我没有得到目录中文件的实际数量。哪里有问题?

c++ - 什么会导致 vkCreateDevice() 在没有给出失败原因的情况下失败?

java - 迭代继承的类对象的列表

R 向量化函数的 Pythonic 替代品

CMAKE RPATH不起作用-找不到共享对象文件

c++ - 当我使用 CMake 和 ninja 构建时,clang++ 会忽略 -MD 标志

c++ - 如何在运行时改变QSqlQueryModel子类的数据模型?

loops - 在外部for循环中引用 “it”

Android CMake 使用预构建 .a 库

android - 用通用的东西替换 WCHAR 和 wchar_t