Если Вы используете попытку Perl Сеть:: IPv6Addr
use Net::IPv6Addr;
if( defined Net::IPv6Addr::is_ipv6($ip_address) ){
print "Looks like an ipv6 address\n";
}
use NetAddr::IP;
my $obj = NetAddr::IP->new6($ip_address);
use Validate::IP qw'is_ipv6';
if( is_ipv6($ip_address) ){
print "Looks like an ipv6 address\n";
}
Здесь вы можете найти некоторые полезные приемы: Как запустить команду во время компиляции в Makefile, созданном CMake?
Вот пример make-файла:
.SUFFIXES: .c.o CC = cc INCLUDE = -I/usr/include -I/usr/sys/include # Comment out one or the other, mutually exclusive CFLAGS = -g # Debugging info #CFLAGS = -O2 # Optimize code LIBS = -L/usr/lib -L/usr/sys/lib -lsome_lib1 -lsome_lib2 # Debugging libs #LIBS = -L/usr/lib # Release FILES = mysource.o myroutines1.o myroutines2.o APP = myapp .c.o: $(CC) $(INCLUDE) $(CFLAGS) -c $< all : $(APP) $(APP) : $(FILES) $(CC) -o $@ $(FILES) $(LIBS) $(CFLAGS) clobber : clean mrproper clean: rm -rf $(FILES) mrproper: rm -rf $(APP)
Обратите внимание, как определяется флаг CFLAGS
. Закомментируйте другое, в зависимости от того, выполняете ли вы отладочную или выпускаемую сборку.
Вышеупомянутый пример предназначен для файла make из моего руководства по созданию исполняемого файла с именем myapp
, который состоит из mysource. c
, myroutines1.c
и myroutines2.c
. И это показывает, насколько make достаточно умен, чтобы построить исполняемый файл без перекомпиляции.
С наилучшими пожеланиями,
Том.
Я не уверен, что понимаю вопрос, но ...
Возможно, вы могли бы использовать дополнительный макрос для предоставления флагов компилятора C командной строки, например:
CFLAGS= <whatever>
CFLAGS2= #nothing
.c.o:
$(CC) $(INCLUDE) $(CFLAGS) $(CFLAGS2) -c $<
Затем, когда вы вводите команду make
, укажите аргумент командной строки «CFLAGS2 = xxx»
, который переопределяет настройка по умолчанию в make-файле.
Обновление
Да, я не понял вопроса OP. Так что любезно не обращайте внимания.