LINUX.ORG.RU

История изменений

Исправление NickNotNick, (текущая версия) :

Столкнулся с такой же проблемой в одном проекте. И вот что удалось выяснить.

С версии 5.9 в qmake поменялось поведение при генерации Makefile. Если в Makefile раньше было

INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = cp -f -R

и для установки в качестве команд использовались INSTALL_FILE и INSTALL_PROGRAM, то теперь стало

INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = cp -f -R
QINSTALL      = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe

и для установки используются QINSTALL и QINSTALL_PROGRAM. И это не дает нормально использовать инструменты вроде checkinstall.

Есть простой костыль – после вызова qmake поменять переменные QINSTALL и QINSTALL_PROGRAM во всех сгенерированных Makefile проекта.

find ./ -type f -name Makefile -exec \
sed -i 's$/usr/lib/qt5/bin/qmake -install qinstall -exe$install -m 755 -p$g' {} \; \
-exec \
sed -i 's$/usr/lib/qt5/bin/qmake -install qinstall$install -m 644 -p$g' {} \;

Это команда выполняется в корневом каталоге сборки, тут все просто: find ищет файлы Makefile и вызывает для них sed, который и делает нужные замены. Далее можно делать make и checkinstall.

Естественно, путь /usr/lib/qt5/bin/qmake нужно заменить на тот, который используется в вашей системе.

Исправление NickNotNick, :

Столкнулся с такой же проблемой в одном проекте. И вот что удалось выяснить.

С версии 5.9 в qmake поменялось поведение при генерации Makefile. Если в Makefile раньше было

INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = cp -f -R

и для установки в качестве команд использовались INSTALL_FILE и INSTALL_PROGRAM, то теперь стало

INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = cp -f -R
QINSTALL      = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe

и для установки используются QINSTALL и QINSTALL_PROGRAM. И это не дает нормально использовать инструменты вроде checkinstall.

Есть простой костыль – после вызова qmake поменять переменные QINSTALL и QINSTALL_PROGRAM во всех сгенерированных Makefile проекта.

find ./ -type f -name Makefile -exec \
sed -i 's$/usr/lib/qt5/bin/qmake -install qinstall -exe$install -m 755 -p$g' {} \; \
-exec \
sed -i 's$/usr/lib/qt5/bin/qmake -install qinstall$install -m 644 -p$g' {} \;

Это команда выполняется в корневом каталоге сборки, тут все просто: find ищет файлы Makefile и вызывает для них sed, который и делает нужные замены. Далее можно делать make и checkinstall.

Исходная версия NickNotNick, :

Столкнулся с такой же проблемой в одном проекте. И вот что удалось выяснить.

С версии 5.9 в qmake поменялось поведение при генерации Makefile. Если в Makefile раньше было

INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = cp -f -R

и для установки в качестве команд использовались INSTALL_FILE и INSTALL_PROGRAM, то теперь стало

INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = cp -f -R
QINSTALL      = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /install -m 755 -p

и для установки используются QINSTALL и QINSTALL_PROGRAM. И это не дает нормально использовать инструменты вроде checkinstall.

Есть простой костыль – после вызова qmake поменять переменные QINSTALL и QINSTALL_PROGRAM во всех сгенерированных Makefile проекта.

find ./ -type f -name Makefile -exec \
sed -i 's$/usr/lib/qt5/bin/qmake -install qinstall -exe$install -m 755 -p$g' {} \; \
-exec \
sed -i 's$/usr/lib/qt5/bin/qmake -install qinstall$install -m 644 -p$g' {} \;

Это команда выполняется в корневом каталоге сборки, тут все просто: find ищет файлы Makefile и вызывает для них sed, который и делает нужные замены. Далее можно делать make и checkinstall.