Выполнение MSYS из cmd.exe с аргументами - PullRequest
3 голосов
/ 30 марта 2010

Я пытаюсь изучить библиотеку wxWidgets , используя MinGW и msys для компиляции кода. Пока все хорошо, но я не могу найти способ отправить команду в MSYS через CMD.exe.

Я использую Sublime Text для редактирования файлов, и у него есть возможность запускать make-файлы. Я хочу, чтобы мои make-файлы могли открывать экземпляр MSYS и отправлять ему команду g ++ и аргументы.

Пример:
Прямо сейчас мой make-файл:

test.exe : main.cpp
        g++ -s main.cpp -o test.exe `wx-config --cxxflags` `wx-config --libs`

Когда mingw32-make запускает команду g ++, она отправляет ее в cmd.exe, который не обрабатывает back-ticks и wx-config jazz. (Но команда работает при запуске из MSYS и каталога, содержащего main.cpp)

Я хочу иметь возможность использовать что-то вроде ...

msys --command g++ -s main.cpp*...etc..*

Таким образом, он загрузит среду MSYS и выполнит команду. Это возможно?

Я большой новичок в makefile, так что, если есть более простой способ, пожалуйста, покажите мне!

Ответы [ 2 ]

4 голосов
/ 30 марта 2010

Мне никогда не удавалось использовать wxwidgets через MSYS, хотя я собираю весь свой другой код таким образом. Несколько дней изучения wx docs не смогли найти решение, и Qt, вероятно, в любом случае является лучшей ставкой на переносимость.

Но достаточно селезенки. Когда вы запускаете msys, вы фактически запускаете командный файл, который запускает консоль rxvt. Вы действительно не хотите использовать это. Вместо этого просто создайте ярлык на рабочем столе для

C:\msys\bin\bash.exe

(или там, где находится ваш каталог MSYS) и щелкните по нему.

Как только вы это сделаете, make-файл, который выглядит так, будет понимать обратные помехи, при условии, что каталог bin MSYS находится в вашем ПУТИ Windows:

foobar:
    echo `ls`

То, что он не будет делать, по моему опыту, компиляция wx.

2 голосов
/ 30 марта 2010

Возможно, вы захотите установить оболочку, которую gmake использует для выполнения команд, составляющих make-файл. Я предполагаю, что MSYS поставляется с bash или даже просто sh, который должен делать эту работу.

...