2016-03-13 3 views
0

Si dans mon Makefile.am, j'ai un ensemble de sources hypothétiquement nommées:Comment compiler un seul fichier C en utilisant Vim makefile par Autotools

lib_LTLIBRARIES = libmy_tutorial.la           
libmy_tutorial_la_SOURCES = \             
    jump_table.h jump_table.c \             
    core.h core.c \             
    my_dynapi.c                 

bin_PROGRAMS = main                
main_SOURCES = main.c               
main_LDADD = libmy_tutorial.la          

CLEANFILES = *.o 

et je suis dans vim. Y at-il un moyen d'appeler :make sur une seule cible si mon Makefile est généré à partir du Makefile.am ci-dessus.

Par exemple:

:make main.o

compilation ne serait main.c de bin_PROGRAMS?

comme si j'avait couru:

gcc -c -o main.o $(CFLAGS) $(CPPFLAGS) main.c

+0

Je suis confus. Quelle est la question ici? – FDinoff

+0

@FDinoff Je m'excuse. Je veux apporter des modifications à un fichier. Puis tapez ': make' dans vim et ne compilez que ce fichier. De cette façon, je peux tester les erreurs syntaxiques lorsque j'écris un module donné. Si mon projet a plusieurs répertoires include et définit qui sont spécifiés dans mon Makefile, je voudrais qu'ils s'appliquent à cette "Single File Compilation". S'il vous plaît faites-moi savoir ce qui n'est pas clair afin que je puisse le rendre plus clair dans ma question. –

+0

Est-ce que ': make main.o' ne fonctionne pas? Ou voulez-vous quelque chose de plus automatique? Quelque chose comme ': set makeprg = make \% <. O' fonctionnerait probablement. – FDinoff

Répondre

2

Puisque vous utilisez Libtool, vos cibles sont .lo fichiers au lieu de .o fichiers. Appelez make main.lo ou make libmy_tutorial_la-main.lo si vous utilisez la cible CFLAGS.