2010-05-02 8 views
5

J'utilise GCC sous Windows   7 (en utilisant la version TDM). J'ai installé MSYS pour pouvoir exécuter Make et compiler en utilisant makefiles. Cependant, il est fastidieux de démarrer à chaque démarrage le shell MSYS Bash, accédez au répertoire du projet et exécutez make.Appel de MSYS bash à partir de Windows cmd

Ce que je veux, c'est automatiser ce processus. Je préfère avoir un fichier batch dans Windows, ou quelque chose de similaire, à partir duquel j'appelle ensuite le shell MSYS Bash. Il doit naviguer vers le répertoire dans lequel se trouve le fichier batch et appeler make.

Est-ce possible? Puis-je envoyer des commandes à MSYS Bash à partir de cmd (comme navigation/invocation make)? Ou puis-je laisser le MSYS Bash lancer un "script Bash", qui définit les commandes à exécuter de la même manière que les scripts batch? PS: Cela ressemble à la question de dépassement de pile Executing MSYS from cmd.exe with arguments.

Répondre

10

pas un expert MSYS, mais fait quelque chose comme ce travail pour vous:

rem Call this something like compile-project.bat 
c: 
cd \src\project 
bash -c "make" 
+0

Oui, il le fait! Merci beaucoup :) –

6

Vous ne devez pas utiliser bash pour exécuter make, ou l'un des autres programmes MSYS. Si vous placez le répertoire bin MSYS sur votre chemin, vous pouvez les exécuter à partir d'un shell de commande Windows. Alternativement, le shell bash a un langage de script extrêmement puissant intégré. Mais je ne sais pas si c'est ce que vous demandez - vous devriez clarifier votre question avec un exemple réel de ce que vous voulez faire, en précisant les étapes que vous voulez automatique.

Ma propre configuration est d'avoir un menu contextuel de Windows Explorer appelé "Bash here" qui ouvre un shell bash dans le répertoire que je sélectionne. Cela se fait via les entrées de registre suivantes:

[HKEY_CLASSES_ROOT\Directory\shell\mybash] 
@="Bash Here" 

[HKEY_CLASSES_ROOT\Directory\shell\mybash\command] 
@="cmd /c c:\\bash.cmd %1" 

Et le fichier suivant dans bash.cmd c ::

@echo off 
title bash 
cd %1% 
bash 

Notez que le répertoire bin MSYS est sur mon chemin. Et bien sûr, tout piratage de registre est à vos risques et périls.

+0

Cela fonctionne très bien, même si je devais utiliser/k au lieu de/c pour que la console reste ouverte. –

0

Sur mon MSYS-1.0.11 avec les paquets développeurs MSYS, je peux appeler un script bash (CurrentScript.sh) avec un fichier cmd/chauve-souris dans le dossier en cours avec cette commande:

R:\MinGW\MSYS-1.0.11\bin\sh "%cd%\CurrentScript.sh" 
Questions connexes