【问题标题】:How can I test if a filename matching a glob exists in cmake?如何测试 cmake 中是否存在与 glob 匹配的文件名?
【发布时间】:2014-07-28 11:11:19
【问题描述】:

我想创建一个仅当具有指定 glob 的文件名存在时才为真的条件。 像这样(它不是工作的cmake代码,只是为了表达我的意图):

if(EXISTS "${LIBRARY_PATH}/lib*.a")
  ...
elseif(EXISTS "${LIBRARY_PATH}/lib/*.dll")
  ...

【问题讨论】:

    标签: cmake glob


    【解决方案1】:
    file( GLOB cmake_varibale ${LIBRARY_PATH}/lib*.a )
    

    将所有匹配文件的列表放入cmake_variable,然后您可以测试它是否为空。

    来自cmake --help-command file

         ...
         file(GLOB variable [RELATIVE path] [globbing expressions]...)
         file(GLOB_RECURSE variable [RELATIVE path] 
              [FOLLOW_SYMLINKS] [globbing expressions]...)
         ...
    
       ...
    
       GLOB will generate a list of all files that match the globbing
       expressions and store it into the variable.  Globbing expressions are
       similar to regular expressions, but much simpler.  If RELATIVE flag is
       specified for an expression, the results will be returned as a
       relative path to the given path.  (We do not recommend using GLOB to
       collect a list of source files from your source tree.  If no
       CMakeLists.txt file changes when a source is added or removed then the
       generated build system cannot know when to ask CMake to regenerate.)
    
       Examples of globbing expressions include:
    
          *.cxx      - match all files with extension cxx
          *.vt?      - match all files with extension vta,...,vtz
          f[3-5].txt - match files f3.txt, f4.txt, f5.txt
    
       GLOB_RECURSE will generate a list similar to the regular GLOB, except
       it will traverse all the subdirectories of the matched directory and
       match the files.  Subdirectories that are symlinks are only traversed
       if FOLLOW_SYMLINKS is given or cmake policy CMP0009 is not set to NEW.
       See cmake --help-policy CMP0009 for more information.
    
       Examples of recursive globbing include:
    
          /dir/*.py  - match all python files in /dir and subdirectories
    
       ...
    

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2015-06-08
      • 2017-07-29
      • 2018-12-25
      相关资源
      最近更新 更多