Изменение файла qmake для создания нескольких целей для использования с макросом "#IFDEF" - PullRequest
4 голосов
/ 27 декабря 2011

Я хочу изменить файл qmake моего проекта Qt таким образом, чтобы он создавал две версии моей программы: одна, где определено SOME_FLAG, и другая, где его нет. Мой код будет вести себя по-разному в зависимости от результата #ifdef SOME_FLAG.

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Насколько я знаю, qmake допускает только одну TARGET, с одним исключением. Таким образом, если вы хотите создать отладочную версию и версию выпуска, можно создать обе версии с одним и тем же файлом проекта. Таким образом, вы также можете указать ОПРЕДЕЛЕНИЯ для каждой сборки отдельно. Имейте в виду, что вы можете использовать команду strip, чтобы удалить отладку после свершившегося факта, и, возможно, это будет полезно в ваших обстоятельствах. Документы HTML Qt4 (посмотрите, установлены ли они в вашей системе) описывают режим debug_and_release в qmake-common-projects.html.

Теперь, когда вы сказали, вам разрешено использовать несколько файлов проекта. Создайте один проект для каждого исполняемого файла с требуемыми ОПРЕДЕЛЕНИЯМИ для каждого проекта. Используйте флаг qmake -o для выдачи отдельных файлов Makefile для каждой цели и одного файла Makefile для их привязки. Не могу помочь вам с QtCreator, потому что я им не пользуюсь, но это работает в командной строке. Пример Makefile, который иллюстрирует эту схему, будет выглядеть примерно так:

all: Makefile_A Makefile_B
        $(MAKE) -f Makefile_A
        $(MAKE) -f Makefile_B

Makefile_A: withSomeFlag.pro
        qmake -o $@ $<

Makefile_B: withoutSomeFlag.pro
        qmake -o $@ $<

Это просто быстрый файл, который делает свою работу, кто-то лучше в Makefiles может сделать его более общим. ПРИМЕЧАНИЕ: отступы Makefile: одиночные символы табуляции , а не 8 пробелов.

Также обратите внимание, что по умолчанию имя исполняемого файла совпадает с базовым именем файла проекта. Надеюсь, что это поможет вам в какой-то мере.

1 голос
/ 27 декабря 2011

Вы можете добавить

DEFINES += "SOME_FLAG"

в вашем .pro файле, предположительно в пределах условного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...