When I try to establish a link from a makefile, I get the following error:
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'.
Executing the Makefile:
C:\Users\snmcdonald\Desktop\winMake2\winMake2>nmake "_DEBUG=" /f win2.mk build Microsoft (R) Program Maintenance Utility Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. cl /c /ZI /Fo"Debug\\" /Fe"Debug\\" main.c Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. main.c cl /c /ZI /Fo"Debug\\" /Fe"Debug\\" lib.c Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. lib.c lib Debug\lib.obj /out:Debug\lib.lib Microsoft (R) Library Manager Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. link Debug\main.obj Debug\lib.lib /out:Debug\main.exe Microsoft (R) Incremental Linker Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. main.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specif ication LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib' NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BI N\link.EXE"' : return code '0x450' Stop.
However, if I restart the same line that failed and the link from the console, I get a successful build. I use the same lib and obj that were created from my make file.
Console Execution:
C:\Users\snmcdonald\Desktop\winMake2\winMake2>link Debug\main.obj Debug\lib.lib /o ut:Debug\main.exe Microsoft (R) Incremental Linker Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. main.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specif ication C:\Users\SHANEM~1\Desktop\winMake2\winMake2>debug\main.exe print from lib
I have included my makefile for reference.
Makefile
!ifdef _DEBUG CC = cl CFLAGS = /c /ZI FILES = *.c OUT = /Fo"Debug\\" /Fe"Debug\\" LINKOUT = /out:Debug DIR = Debug !else CC = cl CFLAGS = /O2 FILES = *.c OUT = /Fo"Release\\" /Fe"Release\\" LINKOUT = /out:Release DIR = Release !endif LIB = lib LINK = link RM = del RMFLAGS = *.ojb *.exe 2>NUL build: main.exe clean: $(RM) $(RMFLAGS) rebuild: clean build main.exe: main.obj lib.lib $(LINK) $(DIR)\main.obj $(DIR)\lib.lib $(LINKOUT)\main.exe lib.lib: lib.obj $(LIB) $(DIR)\lib.obj $(LINKOUT)\lib.lib main.obj: $(CC) $(CFLAGS) $(OUT) main.c lib.obj: $(CC) $(CFLAGS) $(OUT) lib.c
Testing
I tested this on both Visual C version 9 and version 10. I am confused why it crashes in my makefile but succeeds when manually entered at the command prompt.
Decision:
nmake /E /f win2.mk build
/ E - redefines macro-vars with ecological paths.
user295190
source share