• CMake 按照文件目录组织VS工程的筛选器


    macro(group_src_by_dir src_files)
        foreach(file_path ${${src_files}})
            string(REGEX REPLACE ${CMAKE_CURRENT_SOURCE_DIR}/(.*) \1 relative_path ${file_path})
            string(REGEX MATCH ".+\.c.*" is_match ${relative_path})
            if(is_match)
                string(REGEX REPLACE "(.+)\.c.*" \1 cpp_relative_dir ${relative_path})
                if(NOT cpp_relative_dir STREQUAL "main")
                    list(APPEND c_groups ${cpp_relative_dir})
                endif()
            endif(is_match)
        endforeach(file_path)
        
        foreach(file_path ${${src_files}})
            message(${file_path})
            string(REGEX REPLACE ${CMAKE_CURRENT_SOURCE_DIR}/(.*) \1 relative_path ${file_path})
            string(REGEX REPLACE "(.+)\..*" \1 relative_group ${relative_path})
            list(FIND c_groups ${relative_group} index)
            if(NOT index LESS 0)
                message(${relative_group})
                string(REPLACE "/" "\" relative_group ${relative_group})
                source_group(${relative_group} FILES ${file_path})
            else()
                string(REGEX MATCH "(.+)/.*" has_group ${relative_path})
                if(has_group)
                    string(REGEX REPLACE "(.+)/.*" \1 group ${relative_path})
                    string(REPLACE "/" "\" group ${group})
                    message(${group})
                    source_group(${group} FILES ${file_path})
                else()
                    message("")
                    source_group("" FILES ${file_path})
                endif()
            endif()
        endforeach(file_path)
    endmacro(group_src_by_dir)

    该函数有两个效果:

    1.按照代码文件在磁盘的目录结构来组织VS的筛选器结构

    2.如果同一个目录下包含同名的.cpp和.h文件,则会将这两个文件组织到同一个筛选器中.

    效果:

  • 相关阅读:
    oozie的简易安装
    flume监控一个linux指定的一个文件夹的文件信息
    FastDFS图片服务器java后台的简单调用
    java对象与json互转
    final关键字详解
    文件压缩和解压缩工具类
    web上下文监听器ServletContextListener
    基本类型的相互转换
    用java代码在创建hbase表时指定region的范围
    String类的一些常用操作方法
  • 原文地址:https://www.cnblogs.com/tangxin-blog/p/8110186.html
Copyright © 2020-2023  润新知