Comment ajouter des drapeaux à RC.EXE par un Makefile QMake
-
02-10-2019 - |
Question
J'ai la définition suivante dans mon fichier .pro:
RC_FILE = app.rc
Ce fichier contient un RC Include global en haut:
#include "version_info.h"
Le version_info.h tête est sur un répertoire de fichiers d'en-tête commune.
Depuis RC.EXE prend INCLURE variable d'environnement en tenant compte, selon les documents MS, mes jeux de construction par lots de processus jusqu'à que, par conséquent:
SET INCLUDE=%PROJECTDIR%\version;%INCLUDE%
...
QMAKE project.pro -spec win32-msvc2008 -r CONFIG += release
Cela fonctionne parfaitement comme RC semble lire Comportent var de sorte que le fichier « version_info.h » est compris sur chaque fichier RC correctement.
Le problème est quand je produis une solution VS (ou l'importer à travers le VS Addin). L'invocation RC ne contient pas / je drapeau (comme je l'attends), mais ne lit pas INCLUDE variables, même quand j'ai installé à travers le système de dialogue "variables d'environnement dans XP.
Je suis coincé avec ce problème, deux solutions de rechange que je ne pouvais pas se rendre au travail:
- invocation VS RC.exe honneur la COMPREND variable (ne fonctionne pas non plus en tant que variable utilisateur ou système).
- Force QMake passer / I drapeau à l'invocation RC, et obtenir que / I drapeau importé dans les paramètres du projet (propriétés compilateur de ressources).
Merci à l'avance.
La solution
Un bug est ouvert dans Qt bugtracker
Tant qu'il résout, vous avez les solutions suivantes: - pirater le fichier de solution générée (voir le rapport de bogue pour plus de détails) - inclure explictely le fichier d'en-tête avec le chemin, sans compter sur INCLUDEPATH (par exemple #include "../../ version.h")
Autres conseils
Il est un peu hacky mais fonctionne très bien: utiliser la variable qmake QMAKE_RC dans votre fichier .pro (ou via des arguments pour qmake). Par défaut, il est défini comme rc
mais vous pouvez le définir comme rc /i<directory> <any-other-rc-flags>
». Il serait mieux si QMake soutient quelque chose comme QMAKE_RC_FLAGS mais il ne fonctionne pas.
Je ne sais pas si vous avez remarqué, mais le bug bugtracker @Bruce mentionné a été fermé à partir de 5.0.0 RC2: https://codereview.qt-project.org/#change,41984
La variable, vous devez utiliser est RC_INCLUDEPATH
.