【问题标题】:How to Compile Single C file in Vim using Makefile Generated by Autotools如何使用 Autotools 生成的 Makefile 在 Vim 中编译单个 C 文件
【发布时间】:2016-03-13 03:49:21
【问题描述】:

如果在我的 Makefile.am 中,我有一组假设命名的源:

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  

我在 Vim 中。如果我的 Makefile 是从上面的 Makefile.am 生成的,有没有办法在单个目标上调用 :make

例如:

:make main.o

只能从 bin_PROGRAMS 编译 main.c 吗?

就像我跑了一样:

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

【问题讨论】:

  • 我很困惑。这里有什么问题?
  • @FDinoff 我很抱歉。我想对文件进行更改。然后在 vim 中输入 :make 并只编译该文件。这样我可以在编写给定模块时测试语法错误。如果我的项目有几个包含目录并在我的 Makefile 中指定了定义,我希望它们适用于这个“单文件编译”。请让我知道有什么不清楚的地方,以便我在我的问题中更清楚地说明。
  • :make main.o 不起作用吗?或者你想要更自动化的东西?像:set makeprg=make\ %<.o 这样的东西可能会起作用。
  • @FDinoff 因为我的 Makefile 是由 automake 生成的,所以在 vim 中运行 :make main.o 时,我得到了 make: *** No rule to make target 'main.o'. Stop.。我假设这是因为自动生成的 Makefile 中没有明确的规则。如果我运行 :make 来构建所有目标文件,并进行链接等(也称为完整构建)。使用:set makeprg 可能有效,但如果我想做make all,我必须将其切换回默认值?
  • 你是先生成makefile的吗?如果不是,您可能想先生成它

标签: c vim makefile autotools automake


【解决方案1】:

由于您使用的是 Libtool,因此您的目标是 .lo 文件而不是 .o 文件。调用make main.lo,或make libmy_tutorial_la-main.lo,如果你使用的是每个目标CFLAGS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多