首页 > 解决方案 > 如何使用源模式添加库?

问题描述

我想使用正则表达式将所有文件添加到 add_library,但它不起作用。

我试过这个:

add_library(8021qbg SHARED
        8021QBG/"*.h"
        8021QBG/"*.cpp"
        )

得到这个:

CMake Error at CMakeLists.txt:128 (add_library):
  Cannot find source file:

    8021QBG/"*.h"

  Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
  .hxx .in .txx

我试过这个:

file(GLOB 8021x
        8021x/"*.h"
        8021x/"*.cpp"
        )
add_library(8021x SHARED
        ${8021x}
        )

并且在编译 make 命令时看不到要编译的源。

我想使用不写下每个源文件(我想是正则表达式)的东西来构建共享库。

怎么做?

标签: linuxcmake

解决方案


您需要让 cmake 将所有匹配的文件列出到一个变量中:

file(GLOB SOURCE_FILES
    8021QBG/*.h
    8021QBG/*.cpp
)

然后使用这个变量:

add_library(8021qbg SHARED
    ${SOURCE_FILES}
)

更多关于file(GLOB)命令。

生成与 匹配的文件列表并将其存储到 . 通配表达式类似于正则表达式,但要简单得多。


推荐阅读