我正在处理一组复杂的C/C++应用程序,这些应用程序应该是跨平台的。目前为止,它可以在UNIX/Windows上兼容并且运行良好。然而,使用VS2010来维护这个庞然大物是一场噩梦。我有以下的文件结构:
/sources /lib1 /include ... /src ... /lib2 /include ... /src ... /app3 /include ... /src ... /builders /cmake ... /make ... /VS2010 /vs2010.sln /lib1 /lib1.vcxproj /lib1.vcxproj.filters /lib2 /lib2.vcxproj /lib2.vcxproj.filters /app3 /app3.vcxproj /app3.vcxproj.filters
正如我们所看到的,因为所有的内容都是跨平台的,我不得不完全将builders与sources分开。在我看来,这本身就是一个非常好的做法,应该被每个人强制执行。
现在问题来了... VS2010 在组织包含/源文件时变得完全无法使用。你必须手动重复执行“添加 -> 新建筛选器”后面跟着“添加 -> 现有项”。我的文件夹结构非常复杂,每个include文件夹中都有文件。创建筛选器的任务变成了一整天的工作。另一方面,我可以将整个文件夹从资源管理器拖动到VS2010项目中,但是它会将所有头/源文件放在里面,没有任何筛选器,这使得它毫无价值:你不可能在100个文件中寻找正确的文件而没有某种层次结构。
问题是: 是否有一种模糊的方式可以在VS2010中导入文件夹并保留文件夹结构作为筛选器?看起来像是Microsoft创建VS2010的人认为Microsoft是丛林中唯一的动物,你必须在sources文件夹中添加builders项目,以便你可以利用“显示隐藏文件”将它们包含在项目中,并与文件夹结构一起使用。在我看来,这简直是荒谬的...
/sources /lib1 /include ... /src ... /lib2 /include ... /src ... /app3 /include ... /src ... /builders /cmake ... /make ... /VS2010 /vs2010.sln /lib1 /lib1.vcxproj /lib1.vcxproj.filters /lib2 /lib2.vcxproj /lib2.vcxproj.filters /app3 /app3.vcxproj /app3.vcxproj.filters
正如我们所看到的,因为所有的内容都是跨平台的,我不得不完全将builders与sources分开。在我看来,这本身就是一个非常好的做法,应该被每个人强制执行。
现在问题来了... VS2010 在组织包含/源文件时变得完全无法使用。你必须手动重复执行“添加 -> 新建筛选器”后面跟着“添加 -> 现有项”。我的文件夹结构非常复杂,每个include文件夹中都有文件。创建筛选器的任务变成了一整天的工作。另一方面,我可以将整个文件夹从资源管理器拖动到VS2010项目中,但是它会将所有头/源文件放在里面,没有任何筛选器,这使得它毫无价值:你不可能在100个文件中寻找正确的文件而没有某种层次结构。
问题是: 是否有一种模糊的方式可以在VS2010中导入文件夹并保留文件夹结构作为筛选器?看起来像是Microsoft创建VS2010的人认为Microsoft是丛林中唯一的动物,你必须在sources文件夹中添加builders项目,以便你可以利用“显示隐藏文件”将它们包含在项目中,并与文件夹结构一起使用。在我看来,这简直是荒谬的...
.filters
文件的相关部分。可以在Linux或Cygwin下运行它,也可以编写.ps1
或.bat
文件。 - Notinlist*.bat
脚本来调用CMake(如果开发人员非常懒的话 ;) )。 - Synxis