Visual Studio 2010项目文件过滤器
Visual Studio 2010 project file filters
我有一个复杂的C/c++堆应用程序,我正在工作,应该也是独立于平台的。到目前为止,它与UNIX/Windows兼容并且运行良好。然而,在VS2010上维护这个怪物是一场噩梦。我的文件结构如下:
<>之前/来源lib1包括…src…lib2包括…src…app3包括…src…建筑商cmake…使…VS2010vs2010.slnlib1lib1.vcxprojlib1.vcxproj.filterslib2lib2.vcxprojlib2.vcxproj.filtersapp3app3.vcxprojapp3.vcxproj.filters之前正如我们所看到的,因为一切都是平台独立的,所以我必须将构建器与源代码完全分离。恕我直言,这本身就是一个很好的做法,每个人都应该强制执行:)
现在的问题是……当涉及到在过滤器中组织include/sources文件时,VS2010是完全不可用的。你必须手动重复做"添加->新过滤器",然后是"添加->退出项目"。我有一个非常复杂的文件夹结构和文件在每个包含文件夹。创建过滤器的任务变成了一整天的工作。另一方面,我可以把整个文件夹从资源管理器拖到VS2010的项目中,但它会把所有的头文件/源文件都放在那里,没有任何过滤器,使它毫无价值:你不可能在100个文件中搜索正确的一个,没有某种层次结构。问题是:VS2010是否有一些模糊的方式导入文件夹并保留文件夹结构作为过滤器?在我看来,创建VS2010的M$FT的人认为M$FT是丛林中唯一的动物,你必须用构建器项目污染源文件夹,这样你就可以利用"显示隐藏文件"将它们连同文件夹结构一起包含在项目中。
你正在使用CMake,所以我建议你只坚持这个。你可以用它生成makefiles和VS2010项目文件(至少)。对于VS,生成的文件是一个sln和一堆vxproj (CMake脚本中的每个项目一个)。
在CMake文件中,您可以使用命令source_group
对文件进行分组。过滤器将根据源组自动为vs生成。我不知道其他IDE,如Code::Blocks或NetBeans。
如果你想根据文件路径自动分组[Comment request]:
# Glob all sources file inside directory ${DIRECTORY}
file(GLOB_RECURSE TMP_FILES
${DIRECTORY}/*.h
${DIRECTORY}/*.cpp
${DIRECTORY}/*.c
)
foreach(f ${TMP_FILES})
# Get the path of the file relative to ${DIRECTORY},
# then alter it (not compulsory)
file(RELATIVE_PATH SRCGR ${DIRECTORY} ${f})
set(SRCGR "Something/${SRCGR}")
# Extract the folder, ie remove the filename part
string(REGEX REPLACE "(.*)(/[^/]*)$" "\1" SRCGR ${SRCGR})
# Source_group expects \ (double antislash), not / (slash)
string(REPLACE / \ SRCGR ${SRCGR})
source_group("${SRCGR}" FILES ${f})
endforeach()
相关文章:
- 如何在 VSCODE 中设置项目文件夹并链接所有 CPP 文件
- 使用 Premake5 构建库,每个构建没有单独的项目文件
- CMake 如何强制third_party库将项目文件包含在当前项目源目录中?
- 当包含头文件的文件不在根项目文件夹中时,如何包含它
- Qt创建者:加载位于子目录中的项目文件
- 配置过程项目文件中的错误可能无效
- 哪些 Netbeans 8.2 项目文件应提交到C++项目的版本控制?
- C++错误LNK2005和不同项目文件的常规继承
- 为什么我的QTRPT项目文件未在QTCreator中运行
- 严重性代码说明项目文件行抑制状态错误 C2676 二进制">>":"std::ifstream"
- 如何在运行qmake时将变量传递到qmake项目文件
- 如何使用QPixmap,以便在地址中只需要使用项目文件夹
- CMake 插入不带文件夹前缀的项目文件
- QT无法解析项目文件
- 将静态库链接行添加到我的QT项目文件没有区别
- CMAKE QT创建者:将标题文件添加到项目文件中
- Qt C++:将所有库文件包含在项目文件夹中
- 对单元测试(googletest)和项目/文件夹/文件的混淆
- C++项目文件夹外部依赖项仅包含 .h 和 .hpp 文件
- Visual Studio 2010项目文件过滤器