установка приложения qt в другую папку

#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!