VS_VERSION_INFO je nach Build manipulieren
-
Martin Richter schrieb:
1. Einfach eine Condition für die Ressource mit angeben.
2. Die Ressource nicht mit dem Ressource-Editor pfelgen, sondern in eine eigene rc2-Datei packenund dort Defines verwenden.Wie ist das mit 1. gemeint? Wo kann man eine condition setzen? Genau das war ja meine Frage...
Und 2. hab ich wie in dem Beispiel ausprobiert. Der Compiler meckert an der ijn der rc2-Datei eingebundenen h-Datei, dass er ein unerwartetes Dateiende erkennt. Habs genaus gemacht. Einzigster Unterschied: im meinen Ressourcendateien steht als Beispiel statt VALUE "Comments", "Sample Application\0" nur VALUE "Comments", "Sample Application"
-
Klick doch die Ressource im Ressource-Editor an. Geh auch Eigenschaften und was siehts DU? Ein Feld für eine Condition.
Achtung! Du kannst hier nur eine Variable (Define) angeben. Keine logischen Ausdrücke.
-
Martin Richter schrieb:
Klick doch die Ressource im Ressource-Editor an. Geh auch Eigenschaften und was siehts DU? Ein Feld für eine Condition.
Achtung! Du kannst hier nur eine Variable (Define) angeben. Keine logischen Ausdrücke.Danke für den Tipp, das kannte ich so noch nicht. Was ist aber wenn ich mehrere Defines kombinieren will (z.B. _DEBUG und _WIN32)? Muss ich das dann irgendwo im Programm zusammenfassen und wenn ja wo ist dafür die beste Stelle?
-
Du kannst solch einen Define direkt in den Build-Optionen für die RC Datei Deines Projektes angeben.
Nachteil ist wirklich: Du brauchst einen Define!
-
Martin Richter schrieb:
Du kannst solch einen Define direkt in den Build-Optionen für die RC Datei Deines Projektes angeben.
Nachteil ist wirklich: Du brauchst einen Define!
Soweit habe ich das verstanden. Wie unterscheide ich jetzt einen Build für ein 64-bit-System und für ein 32-bit-System? _WIN32 ist ja auch bei 64 Bit definiert. _WIN64 oder WIN64 funktioniert auch nicht. Der Hintergrund ist eben, dass für die Debug- und Releaseversionen bei 32 und 64 bit jeweils was anderes drin stehen soll. Stand alone kann ich Debug und Release unterscheiden oder selbst nur 32 und 64 bit zu unterscheiden bekomme ich nicht hin. Welchen Ansatz kann ich da verfolgen?
-
Du hast doch für jeden Build eine eigene Konfiguration. Trage es dort doch ein.
Ich verstehe Dein Problem nicht.Ansonsten gehe den anderen Weg und extrahiere die Version Infos und benutze interne Defines.
-
Martin Richter schrieb:
Du hast doch für jeden Build eine eigene Konfiguration. Trage es dort doch ein.
Ich verstehe Dein Problem nicht.Ansonsten gehe den anderen Weg und extrahiere die Version Infos und benutze interne Defines.
Genau das will ich ja machen. Ich dachte da an so was:
#ifdef _DEBUG #ifdef _WIN32 #define _WIN32_DEBUG #else #define _WIN64_DEBUG #endif #else #ifdef _WIN32 #define _WIN32_RELEASE #else #define _WIN64_RELEASE #endif #endif
aber das funzt nicht. Damit hätte ich ja interne Defines, die ich dann als Condition angeben könnte.
-
Ah, jetzt weiß ich was du meinst. Hab jetzt unter Projekt->Eigenschaften dann unter Konfigurationseigenschaften->Ressourcen->Allgemein->Präprozessordefinitionen meine Defines eingetragen und jetzt funktioniert das auch wie gewollt. Dennoch stellt sich mir die Frage, wie man im Projekt rausfinden kann, ob es sich um einen 32-Bit- oder 64-Bit-Build handelt? Die Frage kam auch schon öfters...
-
Was meinst Du im Projekt?
Also wo soll wann was ermittelt werden?
-
Martin Richter schrieb:
Was meinst Du im Projekt?
Also wo soll wann was ermittelt werden?Also als Beispiel: ich will z.B. in der dllmain entscheiden, welche lib ich für meine Messkarte einbinde. Sicher kann man das auch über die Linker-Optionen machen, hier soll es aber per #pragma geschehen. Weiterhin soll der Anwendungsname im Fensterbalken anders lauten. Eben deshalb wird die Unterscheidung benötigt.
-
Dann kannst Du nur den zweiten Wge gehen. Bau eine eigene .rc2 Datei Bau dort Deine ifdefs rein und include diese in Deine RC Datei.
Man kann den RC COmpiler nicht anders extern beeinflussen.
Ich halte die Methode über das "Projekt" für am Besten.
-
Martin Richter schrieb:
Ich halte die Methode über das "Projekt" für am Besten.
So mache ich das jetzt auch und es funktioniert ja jetzt auch wie gewollt. Also vielen Dank nochmal für die Hinweise. Allerdings interessiert mich trotzdem noch, wie man rausfindet, ob es sich um einen 64-Bit-Build oder um einen 32-Bit-Build habdelt. Das Symbol WIN32 ist ja bei beiden definiert. Kann man das überhaupt unterscheiden?