Я пытаюсь скопировать целевой двоичный файл в несколько папок. На первом этапе я должен создать эти несколько папок. Я последовал за этим example без успеха.Создать каталог и скопировать файлы с qmake
Единственное, что работал был system(mkdir $$OUT_PWD/newFolder)
, но я пытаюсь использовать QMAKE_EXTRA_TARGETS
для $(MKDIR)
с последующим $(COPY)
от этого example.
Использование Qt 4.8.6 с qmake 2.01a.
Это, как я бегу QMAKE: qmake Server.pro -r -spec linux-g++ CONFIG+=debug CONFIG+=declarative_debug
Update: Это моя текущая реализация, которая создает список каталогов и копий целевой бинарной для выбранных каталогов.
# List all server directories
DIRS = server-1 \
server-2 \
server-3 \
server-4
INSTALL_PATH = $$OUT_PWD
# Shadow build detection
!equals(PWD, $$OUT_PWD) INSTALL_PATH = $$replace(INSTALL_PATH, build, install)
# Loop over all given directories and append the 'install' directory to make absolute paths
for(DIR, DIRS) ABS_DIRS += $$INSTALL_PATH/$$DIR
# Create 'copy' commands for $DIRS
for(DIR, ABS_DIRS) CP_CMD += $(COPY) $$OUT_PWD/$$TARGET $$DIR &&
# Ignore last &&
CP_CMD += true
install.commands = $(MKDIR) $$ABS_DIRS && $$CP_CMD
QMAKE_EXTRA_TARGETS += install
QMAKE_POST_LINK += install
Недостающая часть для меня заключалась в том, что я не выполнил make с правильными аргументами. После вызова make install
, который также включает файлы qmake INSTALLS
, код выполняет. Однако это не удается с чистой сборкой с заданной ошибкой: install: missing file operand. Если я переименую команду установки, например, с копией, я получаю эту ошибку: make: copy: Команда не найдена. Любые подсказки?
OK Я понял, проблема заключалась в необходимости 'make'' '' аргумент 'foo':' make foo' создает 'newFolder'. Является ли это просто мной или является ссылкой на переменную qmake, описанной очень плохо? – krizajb
Да, документация qmake имеет очень мало примеров. Ничего не стоит использовать COPY_DIR и тому подобное. – macetw
Я начинаю верить, что это ужасно, потому что все отказываются от нее для лучшей системы. В противном случае они не получали жалоб, иначе. В лучшем случае это разочаровывает. –