У меня есть какой-то старый код Visual C ++ (v 6.0), который запускается как приложение CLI и собирается с помощью файла nmake, который я хотел бы преобразовать во что-то, что я могу построить (в окне оболочки, не находящемся под IDE) в Visual Studio 2019. Он использует библиотеку, которую я строю аналогичным образом. Мои make-файлы будут включены внизу.
Я нашел c:\program files (x86)\microsoft visual studio 14.0\common7\tools\vsvars32.bat
, и с этим я могу запускать nmake по мере необходимости (у меня есть файл .bat, который собирает около 30 из этих программ в качестве своего рода тестовой базы для инструмент и его библиотеку, и я запускаю его в Emacs и сравниваю выходные данные с последним, когда я его запускал, ожидая, что единственными отличиями будут метки даты и времени, версии компилятора и тому подобное.)
Однако, когда Я перехожу к этапу линковки, получаю ошибку LINK : fatal error LNK1104: cannot open file 'LIBC.lib'
Я посмотрел в соответствующей директории lib и нашел много вариантов libcxxx.lib, но не было простой lib c .lib. Я не знаю, является ли проблема аргументами командной строки, которые я передал в CL или что-то еще. Отсюда и этот вопрос.
# makefile for prog (a hello world type example)
DEFINES=
INCLUDES= -I. -I.\inc.vc -I\yxx\inc.vc -I\yxx\lib.vc
CXXFLAGS= /c /Od /W3 /Za $(DEFINES) $(INCLUDES)
CXX=cl
OBJECTS=yy_main.obj \
yy_mylex.obj \
yy_mypsr.obj
yy_main.obj: \yxx\lib.vc\yy_main.cpp yy_mypsr.h yy_err.tbl yy_syna.tbl
echo $(CXXFLAGS) >$*.OPT
$(CXX) /Fo$@ @$*.OPT \yxx\lib.vc\$*.CPP >$*.ERR
TYPE $*.ERR
yy_mylex.obj: yy_mylex.cpp yy_mylex.h
echo $(CXXFLAGS) >$*.OPT
$(CXX) /Fo$@ @$*.OPT $*.CPP >$*.ERR
TYPE $*.ERR
yy_mypsr.obj: yy_mypsr.cpp
echo $(CXXFLAGS) >$*.OPT
$(CXX) /Fo$@ @$*.OPT $*.CPP >$*.ERR
TYPE $*.ERR
prog.exe: $(OBJECTS) \yxx\lib.vc\yy_lol.lib
CL @<<
$(OBJECTS)
\yxx\lib.vc\yy_lol.lib
/link /out:prog.exe
<<
# makefile for yy_lol.lib (lists of object files pruned to be smaller)
DEFINES= -Dyy_assert_disable_
INCLUDES= -I. -I\yxx\inc.vc -I\yxx\lib.vc
ARFLAGS=
CXXFLAGS= /c /Od /W3 /Za $(DEFINES) $(INCLUDES)
CXX=cl
AR=LIB
RM=del
OBJECTS=\yxx\lib.vc\yy_asrt.obj \
\yxx\lib.vc\yy_ast.obj \
\yxx\lib.vc\yy_bktrk.obj \
\yxx\lib.vc\yy_buf.obj \
\yxx\lib.vc\yy_sym.obj
.cpp.obj:
echo $(CXXFLAGS) >$*.OPT
$(CXX) /Fo$@ @$*.OPT $*.CPP >$*.ERR
TYPE $*.ERR
yy_lol.lib: $(OBJECTS)
-$(RM) $@
-$(AR) /out:$@ $(ARFLAGS) \yxx\lib.vc\yy_asrt.obj
-$(AR) $@ $(ARFLAGS) \yxx\lib.vc\yy_ast.obj
-$(AR) $@ $(ARFLAGS) \yxx\lib.vc\yy_bktrk.obj
-$(AR) $@ $(ARFLAGS) \yxx\lib.vc\yy_buf.obj
-$(AR) $@ $(ARFLAGS) \yxx\lib.vc\yy_sym.obj