2009-02-12 17 views
14

Me gustaría compilar el archivo cpp sin apagar vi.
Sé que el : g ++ file.cpp pero prefiero : hacer por lo que añade esta línea en el archivo .vimrc
compilar directamente desde vim

au FileType C establece makeprg = gcc \%
au FileType Cpp establecer makeprg = g ++ \%

pero me siguen dando
"Marca: ***** no hay objetivos especificados y sin makefile encontrado Detener **.." mensaje.
¿alguien me puede decir lo que está mal con mi configuración?
Utilizo para compilar con éxito con la opción anterior.

+1

busque en un archivo llamado Makefile en su directorio actual. Puede ser ese es el problema? Soy un novato en el makefile, así que solo es una suposición. – Srikanth

+0

No sé la acción interna de lo que "au FileType CPP set makeprg" pero compilo sin makefile desde otro servidor. No entiendo por qué no puedo compilar en mi propia computadora Estoy usando Ubuntu 8.10 –

+0

Nunca escuché hablar de: hacer referencia a vi. ¿Es una mejora de vim? – mouviciel

Respuesta

6

debería cambiar C, Cpp en c, cpp, entonces funciona bien.

gracias a todos, especialmente Rob Wells, su respuesta me ayudó mucho. gracias.

+1

También cambie 'set' a' setlocal' para no anular la configuración predeterminada para otros tipos de archivos. – ZyX

5

Creo que es mucho más fácil escribir un Makefile y ponerlo donde vi lo puede encontrar. No estoy seguro si realmente usa vi (solo he usado Vim), pero cuando hay una compilación Makefile debe ser tan fácil como escribir : make (no se necesita makeprg).

+0

gracias por su respuesta. pero utilizo el editor para proyectos muy pequeños, como problemas de project euler. así que cada vez que escribo un código, hacer Makefile es bastante irritante. es por eso que estoy tratando de usar el: make (compilación directa). –

10

Es necesario la sustitución allí, intentar algo como:

set makeprg=gmake\ %:r.o 

Oh, esto supone que usted tiene:

  1. un (M | m) akefile en el directorio, o
  2. reglas sufijo por defecto están disponibles para su entorno (que parece que no hay)

Comprobar f o por defecto ingresando:

make -n <my_file>.o 

y vea si eso le da algo sensato.

Si hay un archivo MAKE en otro lugar se puede añadir la opción -f para señalar en el makefile, por ejemplo:

set makeprg=gmake\ -f\ ../some_other_dir/makefile\ %:r.o 

cierto para el aprendizaje de la marca, y sobre todo gmake, sugeriría tener un vistazo al excelente libro "Gestión de proyectos con GNU Make" (sanitised Amazon link).

HTH.

aplausos

+0

Descubro cuál fue mi problema. fue sobre el caso de C, Cpp. Debería cambiarlo en c, cpp. pero tu respuesta fue muy útil. Gracias. –

+0

@Luc, ?? ¿O es $ *. O una nueva sintaxis de vim makeprg? –

+0

$ * no es un elemento de sintaxis nuevo y makeprg. Siempre ha estado ahí (con: make). Será reemplazado con hacer objetivo. Todo lo que se necesita es una asignación que usará el%

-5

En primer lugar, sólo hacen el archivo de maquillaje sangriento. Todas las herramientas que existen esperan trabajar con make y si sus compilaciones son así de simples, se tarda unos 30 segundos en escribir un archivo make que compila todos los archivos c y cpp en un archivo ejecutable.

En segundo lugar, si se niega a usar un archivo make a continuación, tratar

:help system 

que se debe dar suficiente información para llegar a su propio comando similar a esta

:com Mymake call system("g++ ".expand("%")) 
+4

¿Por qué crees que es mejor que ':! G ++%'? –

+2

@MariusGedminas Buena pregunta. Y me imagino que todos los votos negativos son parte debido a la nerdrage en el comienzo de la respuesta, que es poco profesional o bienvenida en SO. : P –

2

Se puede lograr fácilmente mediante el uso de mapas de teclado.

En primer lugar abrir su archivo vimrc y estas líneas al archivo,

autocmd filetype cpp nnoremap <F4> :!g++ % -ggdb -o %:r <CR> 
autocmd filetype cpp nnoremap<F5> :!g++ % -ggdb -o %:r && ./%:r <CR> 

La primera línea de los mapas de la tecla F4 para la elaboración del expediente . La segunda línea asigna la clave F5 a compila y ejecuta.

Si utiliza gdb con frecuencia, esto también puede ser útil.

autocmd filetype cpp nnoremap<F10> :!g++ % -ggdb -o %:r && gdb -tui %:r <CR> 

Esta línea mapea la tecla F10 para de compilación y comenzar GDB

Espero que esto ayude.

Cuestiones relacionadas