如何使用目录结构为项目中的源文件配置qmake生成Visual Studio解决方案?

时间:2016-10-18 11:58:05

标签: c++ visual-studio-2013 qmake

我想用makefile中的qmake创建一个Visual Studio项目。到目前为止,qmake AllProjects.pro -r -spec win32-msvc2013 -tp vc "CONFIG+=debug_and_release" -o %CD%/$(VC13PROJ)/AllProjects.sln可以正常工作。问题是,每个项目都有它的头文件和源文件过滤器,这些文件在顶层是明确的。我使用的是Qt5.5.1。

但我喜欢的是文件的结构类似于目录中的文件,因为它们在逻辑上是组合在一起,并且更好地概述了项目结构。是否有可能使用目录结构配置qmake而不是将所有文件放在顶层?

目录结构:

source/
  dir1/  
    file1.h
    file1.cpp
  dir2/
    file2.h
    file2.cpp

问题:Visual Studio中的项目结构如下所示:

project/
  header/  
    file1.h
    file1.h
  source/
    file1.cpp
    file2.cpp

我想在Visual Studio中有一个结构,如:

project/
  header-filter/
    dir1/
      file1.h
    dir2/
      file2.h
  source-filter/
    dir1/
      file1.cpp
    dir2/
      file2.cpp

替代方案也很好:

project/
  dir1/  
    file1.h
    file1.cpp
  dir2/
    file2.h
    file2.cpp

对于源和标题中30多个文件的内容,如果所有内容都位于顶层,则难以获得概述。

编辑:CONFIG-=flatqmake - 选项似乎提供了相对于vcxproj文件的结构。

project/
  header-filter/
    ../
      ../
        source/
          dir1/
            file1.h
          dir2/
            file2.h
  source-filter/
    ../
      ../
        source/
          dir1/
            file1.cpp
          dir2/
            file2.cpp

所以问题仍然存在,如果有可能摆脱起始相对路径:

    ../
      ../
        source/

1 个答案:

答案 0 :(得分:0)

(代表OP发布解决方案)

我通过编写解析所创建解决方案的.vcxproj.filters-files的python脚本解决了这个问题。它搜索创建的过滤器组替换它们,然后调整过滤器中所有项目的已分配过滤器组。