zoukankan      html  css  js  c++  java
  • macro example

    macro(getDirRelative result curdir)
        set(result )
        set(dirlist )
        file(GLOB children RELATIVE ${curdir} ${curdir}/*)
        foreach(child ${children})
            if(IS_DIRECTORY ${curdir}/${child})
                list(APPEND dirlist ${child})
            endif()
        endforeach()
        set(${result} ${dirlist})
    endmacro()
    
    macro(getDirRelativeR result curdir)
        set(result )
        set(_file_and_dir )
        set(_file_only )
    
        file(GLOB_RECURSE _file_and_dir LIST_DIRECTORIES true RELATIVE ${curdir} ${curdir}/*)
        file(GLOB_RECURSE _file_only LIST_DIRECTORIES false RELATIVE ${curdir} ${curdir}/*)
    
        foreach(_file ${_file_only})
            list(FIND _file_and_dir ${_file} pos)
            if(pos GREATER -1)
                list(REMOVE_ITEM _file_and_dir ${_file})
            endif()
        endforeach()
    
        set(${result} ${_file_and_dir})
    endmacro()
    
    macro(getDirRelativeRecurByPattern result curdir pattern)
        set(temp )
        set(all_dir )
    
        getDirRelativeR(all_dir ${curdir})
    
        foreach(dir ${all_dir})
            if (${dir} MATCHES ${pattern})
                list(APPEND temp ${dir})
            endif()
        endforeach()
    
        set(${result} ${temp})
    endmacro()
    
    set(dir )
    getDirRelative(dir ${CMAKE_SOURCE_DIR})
    
    set(dirR)
    getDirRelativeR(dirR ${CMAKE_SOURCE_DIR})
    
    set(dirP)
    set(pattern ".*2$")
    getDirRelativeRecurByPattern(dirP ${CMAKE_SOURCE_DIR} ${pattern})
    
    foreach(d ${dirP})
        message(STATUS ${d})
    endforeach()
    
  • 相关阅读:
    即时通信 选择UDP还是TCP协议
    Gradle 在Eclipse中的使用
    使用idea+gradle建立SSM项目
    Gradle安装和在IDEA使用 基本操作
    IDEA配置 gradle
    Trustin Lee
    java.security.MessageDigest (2) 生成安全令牌!
    java.security.MessageDigest (1)
    递归算法结合数据库 解析 java树形结构
    mysql 日期加减
  • 原文地址:https://www.cnblogs.com/Searchor/p/14176758.html
Copyright © 2011-2022 走看看