【发布时间】: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