Filtros de archivos de proyectos de Visual Studio 2010

Tengo un conjunto complejo de aplicaciones C / C ++ en las que estoy trabajando, que se supone que también es independiente de la plataforma. Hasta ahora, es compatible con UNIX / Windows y funciona bien. Sin embargo, mantener a este monstruo en VS2010 es una pesadilla. Tengo la siguiente estructura de archivos:

 / sources lib1 include ... src ... lib2 include ... src ... app3 include ... src ... builders cmake ... make ... VS2010 vs2010.sln lib1 lib1.vcxproj lib1.vcxproj. filtros lib2 lib2.vcxproj lib2.vcxproj.filters app3 app3.vcxproj app3.vcxproj.filters 

Como podemos ver, porque todo es independiente de la plataforma, tuve que separar completamente los constructores de las fonts. En mi humilde opinión, eso en sí mismo es una muy buena práctica y debe ser implementada por todos 🙂

Este es el problema ahora … VS2010 es completamente inutilizable cuando se trata de organizar los archivos de inclusión / fonts en los filtros. Debe hacerlo manualmente haciendo repetidamente “Agregar -> Nuevo filtro” seguido de “Agregar -> Salir del elemento”. Tengo una estructura de carpetas MUY compleja y archivos en cada carpeta de inclusión. La tarea para crear los filtros se convierte en un trabajo de día completo. Por otro lado, podría arrastrar toda la carpeta desde el Explorador al proyecto dentro de VS2010, pero pondrá todos los archivos de encabezado / origen allí sin ningún filtro, lo que hace que no valga la pena: no es posible buscar dentro de los 100 archivos de la derecha. uno sin tener algún tipo de jerarquía ..

La pregunta es: ¿Tiene VS2010 alguna forma oscura de importar una carpeta Y preservar la estructura de la carpeta como filtros? Me parece que las personas de M $ FT que crearon VS2010 piensan que M $ FT es el único animal en la jungla y DEBES contaminar la carpeta de fonts con proyectos de constructores para que puedas aprovechar “show hiden files” para incluirlos en el proyecto junto con La estructura de carpetas. Eso es absurdo en mi humilde opinión …

Estás usando CMake, así que te aconsejo que te limites a esto solo. Puede generar makefiles y archivos de proyecto VS2010 con él (al menos). Para VS, los archivos generados son una sln y un montón de vxproj (uno para cada proyecto en el script CMake).

En el archivo CMake puede agrupar archivos, usando el comando source_group . Los filtros se generarán automáticamente para vs según los grupos de origen. No sé por otro IDE como Code :: Blocks o NetBeans.

Si desea una agrupación automática basada en la ruta del archivo [Solicitud de comentario] :

 # 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()