#qt #qmake
#qt #qmake
Вопрос:
Я хотел бы установить приложение qt на INSTALL_ROOT
. В настоящее время назначение жестко запрограммировано в pro
файле под target.path
, но я хотел бы получить назначение при запуске:
make install INSTALL_ROOT=/root/parts/myapp/install
как я могу получить доступ к аргументам командной строки make install
из .pro
скрипта qt?
Комментарии:
1. Ваш вопрос кажется обратным.
make install
Команда выполняется только после того, как файл .pro уже был проанализирован qmake.INSTALL_ROOT
должно присутствовать в командной строке qmake или в переменной среды.2. не могу ли я получить доступ к аргументам командной строки make install из файла .pro (например, $ 1)?
3. Вы все еще думаете задом наперед. При вызове
qmake
он считывает ваш файл .pro и генерируетMakefile
. Затем, когда вы вызываетеmake
, иmake install
, он просматривает только этот Makefile, а не ваш файл .pro. Вы можете добавить код в файл .pro, который будет передан вmake install
, но вы не можете передать аргументы вmake install
, которые будут переданы в файл .pro.4.
$${VAR}
является ли переменная qmake;$$(VAR)
является ли среда qmake допустимой;$(VAR)
является ли переменная среды make .
Ответ №1:
Установка переменной INSTALL_ROOT, похоже, работает для меня. Если я установлю цель.путь к /usr/local/bin Я получаю это в результирующий Makefile из qmake:
$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/usr/local/bin/$(QMAKE_TARGET)
Кажется, INSTALL_ROOT добавляется к target.path. Итак, я протестировал пример приложения, подобного этому:
main.cpp:
#include <stdio.h>
int main(int, char**)
{
return printf("HELLO!n") > 0;
}
test.pro
QT = core
SOURCES = main.cpp
target.path = /
INSTALLS = target
затем:
$ qmake
$ make
g -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/qt -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g -o main.o main.cpp
g -Wl,-O1 -o test main.o /usr/lib/libQt5Gui.so /usr/lib/libQt5Core.so -lGL -lpthread
$ INSTALL_ROOT="$PWD/out" make install
/usr/bin/qmake -install qinstall -exe test /home/luca/tmp/test/out/test
strip /home/luca/tmp/test/out/test
$ ./out/test
HELLO!