Создание QT: 'сделайте чистые' причины всем, чтобы быть перекомпилированными?

Как другие ответы упоминают, проблема вкладывается кавычки.

Я предлагаю, чтобы Вы рассмотрели как, заключив работы в кавычки в ударе. Короче говоря, кавычки (любого вида, одинарных кавычек ', двойные кавычки " или обратные галочки'), почти всегда соответствуют первому вхождению кавычки того же вида; необходимо выйти из кавычки для него для не соответствия (но Вы не можете выйти из одинарных кавычек ').

Так, (1) апостроф в what's окружает одинарную кавычку echo ':

echo '
# what's my pub. ip?

Другими словами, Ваш echo управляйте концами после ... ip? и остальное сразу выполняется ударом как команда, которая является, по-видимому, не, что Вы имели в виду.

Как Rajish' ответ предполагает, использование здесь-документов решает многие проблемы заключения в кавычки:

echo >> /home/USER/.bashrc <<'__EOF__'
# what's my pub ip?
echo "we can nest quotes in here"
__EOF__

(2) Затем как уже сообщается в ответе ультраполотна пилы, кавычки на этой строке не соответствуют правильно:

alias myip="curl -s "http://checkip.dyndns.org/" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | head -1"

Вы, вероятно, хотение первого и последнего " символы (двойной кавычки) на строке, чтобы соответствовать, но колотить соответствуют им в порядке, из которого с ними встречаются на строке (слева направо), таким образом, двойная кавычка, оставленная "http://... закрывает кавычки после alias myip=". Точно так же | grep -o и | head -1 рассматриваются в кавычках, и http://... и [0-9]*\.... не. (Это не будет иметь никаких серьезных синтаксических последствий в этом случае, кроме grep наблюдение обратных косых черт, но имеет в виду его для будущего.)

Одно решение состоит в том, чтобы выйти из двойных кавычек (и также обратные косые черты, поскольку обратные косые черты не теряют свое особое значение в двойных кавычках):

alias myip="curl -s \"http://checkip.dyndns.org/\" | grep -o \"[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*\" | head -1"

Другое обходное решение, которое работает в этом случае, должно использовать одинарные кавычки ' вместо этого; любой для определения псевдонима:

alias myip='curl -s "http://checkip.dyndns.org/" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | head -1'

или для команд в определении псевдонима:

alias myip="curl -s 'http://checkip.dyndns.org/' | grep -o '[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*' | head -1"

(3) Наконец, в строках:

export PROMPT_COMMAND='PS1="`
if [[ \$? = "0" ]];

' (одинарная кавычка) символ после PROMPT_COMMAND= интерпретируется как запуск новой мультилинии отдельно заключенная в кавычки строка, которая заканчивается в строке:

fi`[\u@\h \w]\[\e[m\] "'

Таким образом другая отдельно заключенная в кавычки строка запускается ' символ на последней строке, но удар никогда не видит одинарной кавычки соответствия. Таким образом Вы получаете ошибку:

unexpected EOF while looking for matching `''

1
13.10.2012, 17:22
2 ответа

Я не знаю, где Вы получили идею то выполнение a make clean прежде a make install было так или иначе что-то, что необходимо делать.

Каноническое INSTALL файл для автоинструментов обстоятельно объясняет процесс:

  1. ./configure
  2. make
  3. make check (Дополнительно)
  4. make install
  5. make installcheck (Дополнительно)

В объекте 6, это говорит:

Можно удалить двоичные файлы программы и объектные файлы из каталога исходного кода путем ввода make clean.

(Шахта Emphasis.)

make clean что-то, что Вы делаете перед перекомпиляцией для проверки Вы получаете чистую сборку и не имеете оставшихся побочных продуктов от предыдущих выполнений. Можно сделать это после a make install если Вы хотите освободить некоторое пространство, но иметь в наличии источник и конфигурацию. Вы не должны делать этого перед установкой.

7
27.01.2020, 23:12
  • 1
    ну, я думаю, что моя основная проблема состояла в том, что я думал, что Вы пытались объяснить "уже", был a make distcleanи нет make clean. Я принял make clean быть намного менее "решительным".:) Очевидно, я был неправ. –  syntaxerror 28.11.2012, 01:03

Спокойный сценарий сборки работает как это:

1 First build qmake
2 Generate Makefile for a subprojects (*.pro)
3 Start building libaries, then examples and demo projects

Да, сделайте чистыми, уберет все кроме Вашего файла конфигурации, сгенерированного QT.

Мой прием, удаляют "демонстрацию" и "примеры" в вершине *.pro файл, которые экономят приблизительно 40%-е время (на i5 ЦП)

Anway, Вы могли установить кэш для ускорения компиляции, но это требует о 2G + дисковое пространство для буферизации

1
27.01.2020, 23:12
  • 1
    Да, Вы правы: то, что материал демонстраций/примеров является действительно очень огромной частью истории. Сохраненный меня много времени действительно. Я знал, что уже, но благодарит указать на это так или иначе. :) –  syntaxerror 28.11.2012, 01:02

Теги

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