When I run
M-x compile it spawns a new subshell to execute my compile command. As soon as the compile command returns, the shell process is killed. I can see why this would be desirable in most cases, but I am currently in a situation where it is not helpful.
I am working in a specialized build environment right now which requires that I take some initial steps to setup the build before running the compiler. As long as the environment persists,I only need to do the setup steps once. But when I use
M-x compile it means that I have to do the steps each time I want to compile or recompile.
Is there a way that I can spawn a subshell that will persist in the background? One that
M-x compile and
M-x gdb can use each time they need to run a shell process?
I have a program (which we will call
xcc) which builds C code for special platforms. In order to build my code, I first start
xcc from the
The program takes 10+ seconds to load, and then I can enter commands at its interactive prompt
xcc>> add target myprogram xcc>> set source myprogram $PROJDIR/src/ xcc>> set includes myprogram $PROJDIR/include/ xcc>> set type myprogram primitive xcc>> set inputs myprogram int8,int8 xcc>> set outputs myprogram fix16,fix16 xcc>> build myprogram
The above steps can be built into a custom macro
buildmyprog.macro so that I can run it directly from the shell, or from emacs with
$ xcc buildmyprog.macro
The main problem with this approach is the fact that it takes the
xcc program 10 seconds to load, before compilation even begins. I got tired enough of waiting the extra 10 seconds every time I compiled that I have started running
xcc in an
ansi-term in a separate buffer. Now after I modify and save the code, I switch over to the
ansi-term buffer and run
xcc>> build myprogram
This works fine, but every time I switch over to that buffer I think, "Wouldn't it be great if I could just push
F7 and my compile command would get sent to the already-running instance of