使用GCC和autotools为各个源文件设置编译标志的最佳方法是什么?

zol*_*i2k 4 automake autoconf makefile autotools

我需要使用autotools为单个文件禁用优化标志.最好的方法是什么?

pto*_*ato 7

您是指单个源文件还是单个可执行文件?

要禁用可执行文件的优化很简单:

bin_PROGRAMS = myprog
myprog_SOURCES = foo.c bar.c
myprog_CFLAGS = -O0
Run Code Online (Sandbox Code Playgroud)

如果您的意思是要暂时禁用单个源文件的优化,例如出于调试目的,您可以在提示符下重新创建该文件:(来自automake手册的示例)

rm bar.o
make CFLAGS=-O0 bar.o
make
Run Code Online (Sandbox Code Playgroud)

永久地为单个源文件执行操作并不是那么简单,最好通过创建一个便利库来完成:

noinst_LIBRARIES = libnoopt.a
libnoopt_a_SOURCES = bar.c
libnoopt_a_CFLAGS = -O0

bin_PROGRAMS = myprog
myprog_SOURCES = foo.c
myprog_CFLAGS = -O2
myprog_LDADD = libnoopt.a
Run Code Online (Sandbox Code Playgroud)