make and .exe targets

v2te2v2@us.ibm.com v2te2v2@us.ibm.com
Thu Feb 4 08:41:00 GMT 1999


I'm a bit confused about building .exe targets. I am trying to create a
default
makefile for building win32 apps.  Created the following Makefile.  Make
comes
up with the proper command, but then I get an error opening winhello.exe.
See
output...  When I type the command outside of make it works fine.  The
program is attached.

I am using B20.1 with NT4/SP3.

Makefile.......

/**********************************
.SUFFIXES:
.SUFFIXES: .exe .c
.c.exe:
     gcc -mwindows $< -o $@
/**********************************

OUTPUT........

D:\home\v2te2v2\test>make winhello.exe
gcc -mwindows winhello.c -o winhello.exe
/cygnus/CYGWIN~1/H-I586~1/i586-cygwin32/bin/ld: cannot open output file
winhello.exe
: No such file or directory
collect2: ld returned 1 exit status
make: *** [winhello.exe] Error 1

*******************************************

Program......

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

#ifdef __CYGWIN__
WinMainCRTStartup() {
   mainCRTStartup();
};
#endif



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                  PSTR szCmdLine, int iCmdShow)
{
    static char szAppName[]="HelloWin";
    HWND        hwnd;
    MSG         msg;
    WNDCLASSEX  wndclass;

    wndclass.cbSize      = sizeof(wndclass);
    wndclass.style       = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra  = 0;
    wndclass.cbWndExtra  = 0;
    wndclass.hInstance   = hInstance;
    wndclass.hIcon       = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor     = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName  = NULL;
    wndclass.lpszClassName = szAppName;
    wndclass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

    RegisterClassEx(&wndclass);

    hwnd = CreateWindow(szAppName,
                        "The Hello Program",
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        NULL,
                        NULL,
                        hInstance,
                        NULL);

    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);

    while (GetMessage(&msg, NULL, 0, 0)) {
       TranslateMessage(&msg);
       DispatchMessage(&msg);
    } /* End while */

    return msg.wParam;
    }



LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam,
LPARAM lParam)
{
   HDC            hdc;
   PAINTSTRUCT    ps;
   RECT           rect;

   switch (iMsg) {
      case WM_CREATE:
//         PlaySound("hellowin.wav", NULL, SND_FILENAME | SND_ASYNC);
         return 0;
      case WM_PAINT:
         hdc = BeginPaint(hwnd, &ps);
         GetClientRect(hwnd, &rect);
         DrawText(hdc, "Hello, Windows NT", -1, &rect,
                  DT_SINGLELINE | DT_CENTER | DT_VCENTER);
         EndPaint(hwnd, &ps );
         return 0;
      case WM_DESTROY:
         PostQuitMessage(0);
         return 0;
   } /* End switch */

   return DefWindowProc(hwnd, iMsg, wParam, lParam);
}





More information about the Cygwin mailing list