Executing MSYS from cmd.exe with arguments

2019-02-18 22:05发布

问题:

I am trying to learn the wxWidgets library, using MinGW and msys to compile the code. So far so good, but I can not find a way to send a command to MSYS through CMD.exe.

I use Sublime Text to edit files, and it has an option to run makefiles. I want my makefiles to be able to open an instance of MSYS and send the g++ command and arguments to it.

Example:
Right now my makefile is:

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

When mingw32-make goes to run the g++ command, it sends it to cmd.exe, which doesn't handle the back-ticks and wx-config jazz. (But the command does work when run from inside MSYS and the directory holding main.cpp)

I want to be able to use something like...

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

So it will load the MSYS enviroment and run the command. Is this possible?

I am a huge makefile newbie, so if there is an easier way, please show me!

回答1:

You probably want to set the shell that gmake uses to execute the commands that make up the makefile. I assume that MSYS comes with bash or even plain sh, which should do the job.



回答2:

I've never managed to use wxwidgets via MSYS, though I compile all my other code that way. Several days of spelunking in the wx docs failed to find a solution and Qt is probably a better portability bet anyway.

But enough spleen. When you run msys, you are actually running a batch file that starts up the rxvt console. You really don't want to use this. Instead, just create a desktop shortcut to

C:\msys\bin\bash.exe

(or wherever your MSYS directory is) and click on that.

Once you have done that, a makefile that looks like this will understand backticks, provided the MSYS bin directory is on your Windows PATH:

foobar:
    echo `ls`

What it won't do, in my experience is compile wx.