2015-09-26 12 views
1

Обычно я использую IDE, когда я пишу свой собственный код. Я не очень много знаю о замыкающих, настраивать скрипты и т.д.CFLAGS in configure script

Я работаю на большой и сложный существующий проект в настоящее время, а также шаги по созданию являются:

./autogen.sh 
./configure 
make 

я написал свой собственный C и добавили их в Makefile.am. Затем я повторяю этот процесс для построения.

Все в порядке, за исключением одной вещи. Я хочу построить без каких-либо параметров компилятора, таких как -Wall. Мне сказали, что с помощью CFLAGS, как это даст мне то, что я хочу:

./configure CFLAGS=-O0 

Это не похоже на работу, потому что компилятор все еще использует -Wall вариант. Я могу вручную удалить все события -Wall из CFLAGS = "..." в скрипте configure. Это раздражает, но это работает. Но потом, когда я исполняю

./autogen.sh 

настроечный скрипт сбрасываются со всеми -Стенна (и других CLFAGS я не хочу) обратно в своих первоначальных местах. (Я не уверен, но я думаю, что мне нужно запускать autogen.sh каждый раз, когда я добавляю новые файлы в Makefile.am.)

Есть ли лучший способ справиться с этим?

+2

Почему вы не исправили свой код, так что он компилируется без помощи '-Wall'? Безопасно ли использовать, по сути, когда есть предупреждения от '-Wall'? –

ответ

2

Самый простой способ может быть, чтобы сделать это, когда на самом деле строительство, используя make:

make CFLAGS=-O0 

Это временно только для этой сборки, хотя, это не будет постоянным.

+0

Спасибо, это помогло, но теперь у меня другая проблема. По-видимому, есть еще опция «Wl, -soname», которую мне также нужно как-то отключить. Подумайте, как отключить этот параметр? –

+0

@JamesMiller Это похоже на флаг компоновщика, который является 'LDFLAGS' –

1

Выполнение

./configure --help 

показывает

Some influential environment variables: ... 
    CFLAGS  C compiler flags 

Лучше подход

env CFLAGS="-O0" ./configure 

Тогда простой

make 

делает, как вы ожидаете. Это полезно для установки других флагов компиляции.

+1

. Совет, как правило, наоборот. Вместо 'CFLAGS = -O0./Configure' лучше делать' ./configure CFLAGS = -O0', потому что в этом случае скрипт './Configure' будет записывать тот факт, что эта переменная была установлена, и убедитесь, что это снова установите, если вы выполните './config.status --recheck'. (Похоже, что это не проблема OP) –