Как определить флаги компилятора во время компиляции с помощью CMake?

Если Вы используете попытку Perl Сеть:: IPv6Addr

use Net::IPv6Addr;

if( defined Net::IPv6Addr::is_ipv6($ip_address) ){
  print "Looks like an ipv6 address\n";
}

NetAddr:: IP

use NetAddr::IP;

my $obj = NetAddr::IP->new6($ip_address);

Проверяет:: IP

use Validate::IP qw'is_ipv6';

if( is_ipv6($ip_address) ){
  print "Looks like an ipv6 address\n";
}

12
задан Łukasz Lew 11 December 2009 в 21:48
поделиться

3 ответа

Здесь вы можете найти некоторые полезные приемы: Как запустить команду во время компиляции в Makefile, созданном CMake?

3
ответ дан 3 December 2019 в 00:37
поделиться

Вот пример 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 достаточно умен, чтобы построить исполняемый файл без перекомпиляции. С наилучшими пожеланиями, Том.

-3
ответ дан 3 December 2019 в 00:37
поделиться

Я не уверен, что понимаю вопрос, но ...

Возможно, вы могли бы использовать дополнительный макрос для предоставления флагов компилятора C командной строки, например:

CFLAGS=  <whatever>
CFLAGS2= #nothing  

.c.o:
    $(CC) $(INCLUDE) $(CFLAGS) $(CFLAGS2) -c $<

Затем, когда вы вводите команду make , укажите аргумент командной строки «CFLAGS2 = xxx» , который переопределяет настройка по умолчанию в make-файле.

Обновление

Да, я не понял вопроса OP. Так что любезно не обращайте внимания.

-5
ответ дан 3 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: