cmd.exe und bash

OP (Firma: Torrox.de) #4957794
Lesenswert?

Hallo,
ich möchte unter Windows 10 mit CMake und MSVC Software bauen. Damit die 
MSVC Commandline Tools im Pfad sind, muss eine bat-Datei aufgerufen 
werden ("C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\Common7\Tools\VsDevCmd.bat"). Ich möchte den Build 
gerne von der bash shell aus bedienen, die bei der Git Installation 
dabei war ("C:\Program Files\Git\git-bash.exe").

Mein Problem ist jetzt, die beiden zu "verheiraten". Ich möchte also 
eine gestartete bash haben, in der die Umgebungsvariablen gesetzt sind, 
die VsDevCmd.bat setzt.

Ich hatte jetzt 2 Ansätze ausprobiert:
1) in .bash_profile das bat-file starten

Ich denke, dass scheitert daran, dass ich das bat-file zwar starten 
kann, aber wenn cmd.exe dann zurück kehrt, die Umgebungsvariablen in der 
bash natürlich nicht mehr gesetzt sind. Wenn ich cmd.exe mit /K startet, 
dann habe ich zwar die Umgebung, bin aber auch nicht mehr in der bash.

2) ein bat-file schreiben, dass nacheinander VsDevCmd.bat und dann 
git-bash.exe aufruft.

Schreibe ich die beiden Kommandos mal so ganz naive hintereinander in 
eine bat-Datei, dann wir vcvars64.bat gestartet, nicht aber die shell:
1
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
2
"C:\Program Files\Git\git-bash.exe"

Hat jemand eine Idee, wie ich das Problem lösen kann?

mfg Torsten
OP (Firma: Torrox.de) #4957809
Lesenswert?

Peter II schrieb:
> Torsten R. schrieb:
>> Hat jemand eine Idee, wie ich das Problem lösen kann?
>
> einfach den Inhalt der CMD in dein Shell script übernehmen. Es werde
> doch nur umgebungsvariabel gesetzt.
>
> sonst mal schauen ob die mit source weiterkommst
>
> https://en.wikipedia.org/wiki/Source_(command)

Das bat-file macht schon ein wenig mehr, als direkt die Variablen zu 
setzen und das ist auch der Grund, warum "source" die bat-Datei nicht 
als bash script interpretieren kann.
OP (Firma: Torrox.de) #4957815
Lesenswert?

Peter II schrieb:
> Torsten R. schrieb:
>> Das bat-file macht schon ein wenig mehr, als direkt die Variablen zu
>> setzen
>
> was soll es denn noch machen? Ich sehen nichts anderes.

Die Datei ist 219 Zeilen lang und neben dem Kommando "set" wird sehr 
häufig "if" verwendet und "@rem". Ich wollte die Datei jetzt nicht nach 
bash portieren und dass dann mit jedem Compiler-Update wiederholen.
Gast #4957822
Lesenswert?

Torsten R. schrieb:
> Die Datei ist 219 Zeilen lang und neben dem Kommando "set" wird sehr
> häufig "if" verwendet und "@rem". Ich wollte die Datei jetzt nicht nach
> bash portieren und dass dann mit jedem Compiler-Update wiederholen.

dann musst du etwas kreativ sein. Rufe VsDevCmd.bat auf, schreibt alle 
umgungsvariablen in eine Datei und dann liest du die Datei mit Source 
ein.
OP (Firma: Torrox.de) #4957830
Lesenswert?

Peter II schrieb:

> dann musst du etwas kreativ sein. Rufe VsDevCmd.bat auf, schreibt alle
> umgungsvariablen in eine Datei und dann liest du die Datei mit Source
> ein.

Das klingt mir sehr aufwändig. Wenn ich direkt
1
%comspec% /K "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"

ausführe und von da aus git-bash.exe starte, dann habe ich eine 
bash-shell, dass das Environment korrekt gesetzt hat. Das muss sich doch 
irgend wie "automatisieren" lassen.
#4958476
Lesenswert?

Torsten R. schrieb:
> Schreibe ich die beiden Kommandos mal so ganz naive hintereinander in
> eine bat-Datei, dann wir vcvars64.bat gestartet, nicht aber die shell:

Wenn du eine Batch-Datei aus einer anderen aufrufst kommt der 
befehlsinterpreter daraus nicht mehr zurück.

Versuch mal

call "C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
call "C:\Program Files\Git\git-bash.exe"

dann sollte git-bash auch ausgeführt werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren