Hi John,
Visual Studio 2017 Community Edition does come with a vcvarsall.bat. This is my batch file that I use when opening a new cmd shell to work with VS2017:
****************************************
rem Set the PATH for EPICS builds
call C:\EPICS\setup_epics_path.bat
rem This file sets up for an EPICS windows-x64 build
set EPICS_HOST_ARCH=windows-x64-static-vs2017
rem These are the locations of "make", "re2c", "Perl", and EPICS base. Prepend them to the PATH.
rem Execute the Visual Studio batch file for 64-bit builds
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
****************************************
I put the path stuff in a separate file because I have a bunch of batch files like the above, for different versions of VS, and for 32/64 bit builds. This is setup_epics_path.bat
****************************************
rem This file sets the path for builds
set PATH=C:\Program Files\GNU make;^
C:\Program Files\re2c;^
C:\Perl64\bin;^
H:\epics\base\bin\windows-x64-static;^
H:\epics\extensions\bin\windows-x64-static;^
%PATH%
****************************************
You may need to install an optional package when installing VC2017 Community to get the VC\Auxiliary\Build\vcvarsall.bat directory and files.
I suspect this may fix your problem with epicsTempFile, because I saw this in this tech-talk message
https://epics.anl.gov/tech-talk/2016/msg01636.php
I’ve managed to reproduce a epicsTempFile.obj error and in this case it was caused by make not being able to locate the Visual Studio compiler.
Mark
I am trying a new build of EPICS, starting with base of course, on Windows. Since I did not have the compiler on this (a virtual machine on a Mac actually) I grabbed the latest community edition which was
2017. In the past I would make simple mods to the win32.bat in startup directory and things would work. So far I have not found the vsvarsall.bat location in this version so I simply went to the ‘x64 Native Tools Command Prompt for VS 2017’ set the EPICS_HOST_ARCH
to windows-x64 and set path to include location of make and perl and started compiling. Everything starts OK but I reach a point where I get the following error:
cl -EHsc -GR -DUSE_TYPED_RSET -nologo -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -GL -Oy- -W3 -w44355 -w44344 -w44251 -MD -DEPICS_BUILD_DLL -DEPICS_CALL_DLL
-TP -I. -I../O.Common -I. -I../../../src/libCom/osi/compiler/msvc -I../../../src/libCom/osi/compiler/default -I. -I../../../src/libCom/osi/os/WIN32 -I../../../src/libCom/osi/os/default -I.. -I../../../src/libCom/as -I../../../src/libCom/bucketLib -I../../../src/libCom/calc
-I../../../src/libCom/cvtFast -I../../../src/libCom/cppStd -I../../../src/libCom/cxxTemplates -I../../../src/libCom/dbmf -I../../../src/libCom/ellLib -I../../../src/libCom/env -I../../../src/libCom/error -I../../../src/libCom/fdmgr -I../../../src/libCom/flex
-I../../../src/libCom/freeList -I../../../src/libCom/gpHash -I../../../src/libCom/iocsh -I../../../src/libCom/log -I../../../src/libCom/macLib -I../../../src/libCom/misc -I../../../src/libCom/osi -I../../../src/libCom/pool -I../../../src/libCom/ring -I../../../src/libCom/taskwd
-I../../../src/libCom/timer -I../../../src/libCom/yacc -I../../../src/libCom/yacc -I../../../src/libCom/yajl -I../../../include/compiler/msvc -I../../../include/os/WIN32 -I../../../include -c ../../../src/libCom/osi/os/WIN32/epicsTempFile.cpp
process_begin: CreateProcess(NULL, cl -EHsc -GR -DUSE_TYPED_RSET -nologo -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -GL -Oy- -W3 -w44355 -w44344 -w44251 -MD -DEPICS_BUILD_DLL -DEPICS_CALL_DLL
-TP -I. -I../O.Common -I. -I../../../src/libCom/osi/compiler/msvc -I../../../src/libCom/osi/compiler/default -I. -I../../../src/libCom/osi/os/WIN32 -I../../../src/libCom/osi/os/default -I.. -I../../../src/libCom/as -I../../../src/libCom/bucketLib -I../../../src/libCom/calc
-I../../../src/libCom/cvtFast -I../../../src/libCom/cppStd -I../../../src/libCom/cxxTemplates -I../../../src/libCom/dbmf -I../../../src/libCom/ellLib -I../../../src/libCom/env -I../../../src/libCom/error -I../../../src/libCom/fdmgr -I../../../src/libCom/flex
-I../../../src/libCom/freeList -I../../../src/libCom/gpHash -I../../../src/libCom/iocsh -I../../../src/libCom/log -I../../../src/libCom/macLib -I../../../src/libCom/misc -I../../../src/libCom/osi -I../../../src/libCom/pool -I../../../src/libCom/ring -I../../../src/libCom/taskwd
-I../../../src/libCom/timer -I../../../src/libCom/yacc -I../../../src/libCom/yacc -I../../../src/libCom/yajl -I../../../include/compiler/msvc -I../../../include/os/WIN32 -I../../../include -c ../../../src/libCom/osi/os/WIN32/epicsTempFile.cpp, ...) failed.
make (e=2): The system cannot find the file specified.
make[3]: *** No rule to make target 'epicsTempFile.obj', needed by 'antelope.exe'. Stop.
make[3]: Leaving directory 'C:/epics/base-3.16.1/src/libCom/O.windows-x64'
make[2]: *** [../../configure/RULES_ARCHS:58: install.windows-x64] Error 2
make[2]: Leaving directory 'C:/epics/base-3.16.1/src/libCom'
make[1]: *** [../configure/RULES_DIRS:84: libCom.install] Error 2
make[1]: Leaving directory 'C:/epics/base-3.16.1/src'
make: *** [configure/RULES_DIRS:84: src.install] Error 2
make: Leaving directory 'C:/epics/base-3.16.1'
I have tried this with base-3.15.5, base-3.16.1 and base-7.0.1.1 and all stop at the same place with very similar errors (haven’t checked if they are totally identical.
Has anyone seen this problem?
John