zoukankan      html  css  js  c++  java
  • 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文件,则会将这两个文件组织到同一个筛选器中.

    效果:

  • 相关阅读:
    jmeter对数据库进行简单的压测
    数据库语言sql
    (二)变量的概念与分类
    (一)Java关键字与标识符
    socket之远程执行命令
    python文件操作
    UDP基础server与client
    TCP基础server与client
    Python 之 杂谈(迭代器iter)、偏函数
    python 之解决socket 粘包
  • 原文地址:https://www.cnblogs.com/tangxin-blog/p/8110186.html
Copyright © 2011-2022 走看看