plugin - install c++ eclipse oxygen
Incluir cambio de ruta de encabezado de Windows a Linux (6)
¡Tu gente! Sí , puede y siempre debe usar barras diagonales. ¡Creo que el problema es cómo llegar desde aquí !
Si tiene Perl instalado, el siguiente liner convertirá un archivo fuente en C ++ para usar barras diagonales, guardando la versión original en un archivo con la extensión .bak
:
perl -i.bak -pe "tr!//!/! if /^/s*#/s*include/b/" myfile.cpp
(La línea de comando anterior es para Windows, si está utilizando Linux u otro shell tipo Unix, use comillas simples alrededor del tercer parámetro en lugar de comillas dobles).
Si tiene un grupo de archivos que necesita convertir, diga todos los archivos que terminan en .cpp
:
for %f in (*.cpp) do perl -i.bak -pe "tr!//!/! if /^/s*#/s*include/b/" %f
El comando correspondiente para un entorno de shell Bourne (shell típico de Linux):
for f in *.cpp; do perl -i.bak -pe ''tr!//!/! if /^/s*#/s*include/b/'' $f; done
Si no tiene Perl instalado, debería poder encontrar un editor de texto que permita buscar y reemplazar archivos.
Estoy portando una aplicación escrita en C ++ desde Windows a Linux. Tengo un problema con la ruta de los archivos de encabezado. Windows usa /
y Linux usa /
. Me resulta engorroso cambiar esto en todos y cada uno de los archivos fuente y encabezado. ¿Hay algo de trabajo?
¿Qué versión de Windows estás usando? Hasta donde yo sé, comenzando con Windows XP, las barras diagonales realmente funcionan como delimitadores de ruta.
Las API de Windows siempre han admitido la barra diagonal como separador de directorios. Y eso se debe a que, al menos desde atrás, al menos DOS 3.1 también fue compatible. El problema siempre ha sido COMMAND.COM y CMD.EXE. Usan barra inclinada como indicador de opción (en lugar de guión como se encuentra en Unix). Nunca utilice barras diagonales inversas para separadores de directorios en idiomas en los que se utiliza una barra diagonal inversa en una cadena para escapar de caracteres especiales.
Si no tiene un shell de Unix, ¿no tiene un editor que busca / reemplaza en varios archivos? Diablos, escribe un pequeño programa para hacerlo si es necesario. El análisis del código fuente de C ++ para sus declaraciones #include no puede ser difícil.
Utilice siempre barras diagonales en las directivas #include. Algunos sistemas operativos / compiladores lo requieren, y Windows / Visual Studio es lo suficientemente inteligente como para manejarlo correctamente.
Desde que empiezas con el código de Windows, asumo que tienes Visual Studio. Use el cuadro de diálogo Buscar y reemplazar y cree una expresión regular que hará la sustitución por usted. Ejecute el buscar y reemplazar en todos los archivos.
Por ejemplo, use algo como esto:
#include:b+<{[^///>]}//
para su expresión de búsqueda y
#include </1
para la expresión de reemplazo ( advertencia: no probado ). Ejecute esto en todos los archivos hasta que no se realicen reemplazos. Luego cambie los corchetes en ángulo a comillas y repita.
Siempre use barras diagonales en #include caminos. El trabajo del compilador consiste en asignar la ruta al esquema de directorio / barra que soporte el sistema operativo subyacente.
Puede probar este comando basado en el comando perl anterior que hace el trabajo recusrively
find . -type f -name /* | xargs grep ''#include'' | grep ''//' |awk -F: ''{print $1}''|sort| uniq | xargs -n1 perl -i.bak -pe ''tr!//!/! if /^/s*#/s*include/b/''