On 2017-03-07 07:15 PM, Allan Taylor wrote:
Hello everyone,
First time posting to this group! I'm a lecturer at a university and I'm interested in using Geany as the IDE for a class we run on an introduction to the C language for freshman electrical and computer engineering students. Is this the appropriate way to ask questions / for help? I didn't seem to find any Geany forums...
Anyways, I'm trying to figure out how I can use Geany to build a multiple-C-file project on a Windows machine. I have installed MinGW / GCC on my computer and have added the directory as part of the "PATH" variable. I can access GCC directly from the command line no problem. Geany actually works great when compiling and running single-file programs.
I'm trying to run a Command Prompt expression I wrote which generates the object files for every C-file in the current directory. To do this, I need to use multiple calls to GCC using a for-loop. Afterwards, I can use a single call to GCC to link all the object files together. No problems there...
The problem I'm having is this: when I try to add the CMD prompt expression to a custom build command, Geany gives me the error "Process failed (They system cannot find the file specified)".
The command I'm trying to run is below: for %i in (*.c); do gcc -Wall -c -o "%~ni.o" "%i";
This works fine when I run it directly from the CMD prompt. Any reason why this would not work through Geany's "Set Build Commands" area?
The linking command (to merge all the object files together) works fine from Geany: gcc -Wall -o "%e" *.o
Currently, I just have to click the "Compile" button separately on every C file individually first before doing the linking command above.
Below is the computer information: *Geany 1.29 for Windows* *Running Windows 7, 64-bit*
The two C-files I'm trying to compile together are quite simple... see below:
Inside main.c: #include "stdio.h" int myfunc(int,int); int main(void) { int a = 5, b = 2; printf("My answer is %d", myfunc(a,b)); return 0; }
Inside function.c: int myfunc(int x,int y) { return 3*x - y; }
Any help is greatly appreciated! Thanks!
Probably the best solution is to use a Make file, something like this should do:
SRCS = main.c function.c OBJS = $(SRCS:.c=.o)
program: $(OBJS) gcc -o $@ $(OBJS)
.c.o: gcc -Wall -c -o $@ $<
Regards, Matthew Brush