<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>I have an MFC/Vtk  c++ program that I had been building without problems until I upgraded from CMake-2.8.6 to CMake-2.8.12.2   (This is on Windows with Visual Studio 10)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>After the CMake upgrade I got link errors indicating:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.0pt;font-family:Consolas'>1>msvcrtd.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.0pt;font-family:Consolas'>1>C:\Projects\VtkPrograms\VTKPatheter\build\Debug\vtkPatheter.exe : fatal error LNK1120: 1 unresolved externals<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I tried a few things to try and resolve this (changing subsystem to CONSOLE or WINDOWS didn’t fix it), but couldn’t really figure it out.  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I rebuilt VTK (v 5.8.0) successfully with the newer version of CMake, but couldn’t get my own program to build without the linking problem.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So I gave up and went back to CMake-2.8.6, but I am wondering if anybody ran into this issue and what sort of magic is required in the CMakelist.txt file to fix it.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks for whatever help you can give me<o:p></o:p></p><p class=MsoNormal>Walter<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>----- below is contents of my CMakelist.txt file ----------------<o:p></o:p></p><p class=MsoNormal>PROJECT(vtkPatheter)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>cmake_minimum_required(VERSION 2.6)<o:p></o:p></p><p class=MsoNormal># This INCLUDE is to allow developers with both MSVC and Borland compilers installed<o:p></o:p></p><p class=MsoNormal># to manually change the FindVTK results to point to the correct (MSVC) vtk build directory<o:p></o:p></p><p class=MsoNormal>INCLUDE ($ENV{VTK_SOURCE_DIR}/Examples/GUI/Win32/vtkMFC/LocalUserOptions.cmake OPTIONAL)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>IF (NOT USE_VTK_FILE)<o:p></o:p></p><p class=MsoNormal>  INCLUDE (${CMAKE_ROOT}/Modules/FindVTK.cmake)<o:p></o:p></p><p class=MsoNormal>ENDIF (NOT USE_VTK_FILE)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>IF (USE_VTK_FILE)<o:p></o:p></p><p class=MsoNormal>  INCLUDE(${USE_VTK_FILE})<o:p></o:p></p><p class=MsoNormal>ENDIF (USE_VTK_FILE)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># This causes the build to be generated with Unicode setting<o:p></o:p></p><p class=MsoNormal>ADD_DEFINITIONS(-D_UNICODE)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>INCLUDE_DIRECTORIES(../GeomPrim/include/inc<o:p></o:p></p><p class=MsoNormal>                                                ${CMAKE_CURRENT_SOURCE_DIR}/<o:p></o:p></p><p class=MsoNormal>            ${CMAKE_CURRENT_SOURCE_DIR}/PointGroupData<o:p></o:p></p><p class=MsoNormal>            ${CMAKE_CURRENT_SOURCE_DIR}/Factory<o:p></o:p></p><p class=MsoNormal>            ${CMAKE_CURRENT_SOURCE_DIR}/Memento<o:p></o:p></p><p class=MsoNormal>                                                ${CMAKE_CURRENT_SOURCE_DIR}/VirtualCatheter<o:p></o:p></p><p class=MsoNormal>                                                ${CMAKE_CURRENT_SOURCE_DIR}/Utilities<o:p></o:p></p><p class=MsoNormal>                                                ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/xml<o:p></o:p></p><p class=MsoNormal>            ${CMAKE_CURRENT_SOURCE_DIR}/AutoDataSample40                                   )<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>#---------------------------<o:p></o:p></p><p class=MsoNormal># vtkPatheter executes a "system" command that invokes the cygwin executable gawk<o:p></o:p></p><p class=MsoNormal>#  The following bit of macros/code ensures that the dependent dlls and executable <o:p></o:p></p><p class=MsoNormal>#  are copied to the execution directory.  Probably there is an easier way<o:p></o:p></p><p class=MsoNormal>#-----------------------------<o:p></o:p></p><p class=MsoNormal>SET( GAWK_BINS cyggcc_s-1.dll cygiconv-2.dll cygintl-8.dll cygsigsegv-2.dll cygwin1.dll gawk.exe)<o:p></o:p></p><p class=MsoNormal># generates custom copy/dependency commands for each of the files in GAWK_BINS<o:p></o:p></p><p class=MsoNormal>foreach(f ${GAWK_BINS})<o:p></o:p></p><p class=MsoNormal>ADD_CUSTOM_COMMAND(<o:p></o:p></p><p class=MsoNormal>  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${f}<o:p></o:p></p><p class=MsoNormal>  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/../gawkBins/${f} ${CMAKE_CURRENT_BINARY_DIR}/${f}<o:p></o:p></p><p class=MsoNormal>  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../gawkBins/${f}<o:p></o:p></p><p class=MsoNormal>)<o:p></o:p></p><p class=MsoNormal>endforeach(f)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>SET( GAWK_SCRIPTS ExtractAblationToMs.awk ExtractSheathToMs.awk ExtractMapTimestampRanges.awk ExtractTargetTimestampRanges.awk )<o:p></o:p></p><p class=MsoNormal># and lastly for the source awk code, which ends up in the same directory as the executable as well<o:p></o:p></p><p class=MsoNormal>foreach(f ${GAWK_SCRIPTS})<o:p></o:p></p><p class=MsoNormal>ADD_CUSTOM_COMMAND(<o:p></o:p></p><p class=MsoNormal>  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${f}<o:p></o:p></p><p class=MsoNormal>  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${f} ${CMAKE_CURRENT_BINARY_DIR}/${f}<o:p></o:p></p><p class=MsoNormal>  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${f}<o:p></o:p></p><p class=MsoNormal>)<o:p></o:p></p><p class=MsoNormal>endforeach(f)<o:p></o:p></p><p class=MsoNormal># The result of this is an extra project in visual studio that gets built by copying<o:p></o:p></p><p class=MsoNormal># I have no idea why I had to do this for the gawk_scripts, but not for the gawk_binaries<o:p></o:p></p><p class=MsoNormal>ADD_CUSTOM_TARGET(gawkHack DEPENDS ${GAWK_SCRIPTS})<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>SET(POINT_GROUP_FILES<o:p></o:p></p><p class=MsoNormal>PointGroupData/PointGroup.cpp<o:p></o:p></p><p class=MsoNormal>PointGroupData/PointGroup.h<o:p></o:p></p><p class=MsoNormal>PointGroupData/PointGroupMemento.cpp<o:p></o:p></p><p class=MsoNormal>PointGroupData/PointGroupMemento.h<o:p></o:p></p><p class=MsoNormal>PointGroupData/PointGroupOnSurfaceMemento.cpp<o:p></o:p></p><p class=MsoNormal>PointGroupData/PointGroupOnSurfaceMemento.h<o:p></o:p></p><p class=MsoNormal>)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>SET(FACTORY_FILES<o:p></o:p></p><p class=MsoNormal>Factory/AutoFactoryRegistrar.h<o:p></o:p></p><p class=MsoNormal>Factory/Factory.h<o:p></o:p></p><p class=MsoNormal>Factory/FactoryRegistrar.h<o:p></o:p></p><p class=MsoNormal>Factory/FactorySingleton.cpp<o:p></o:p></p><p class=MsoNormal>Factory/FactorySingleton.h<o:p></o:p></p><p class=MsoNormal>Factory/GenericFactory.h<o:p></o:p></p><p class=MsoNormal>)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>SET(MEMENTO_FILES<o:p></o:p></p><p class=MsoNormal>Memento/CartoPoint.cpp<o:p></o:p></p><p class=MsoNormal>Memento/CartoPoint.h<o:p></o:p></p><p class=MsoNormal>Memento/CartoSurfaceMemento.cpp<o:p></o:p></p><p class=MsoNormal>Memento/CartoSurfaceMemento.h<o:p></o:p></p><p class=MsoNormal>Memento/SurfaceMemento.h<o:p></o:p></p><p class=MsoNormal>Memento/SurfacePointMemento.h<o:p></o:p></p><p class=MsoNormal>)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>SET(UTILITY_FILES<o:p></o:p></p><p class=MsoNormal>Utilities/Export.h<o:p></o:p></p><p class=MsoNormal>Utilities/stopwtch.h<o:p></o:p></p><p class=MsoNormal>Utilities/Color.cpp Utilities/Color.h<o:p></o:p></p><p class=MsoNormal>Utilities/Material.h<o:p></o:p></p><p class=MsoNormal>Utilities/supplemental.cpp Utilities/supplemental.h<o:p></o:p></p><p class=MsoNormal>Utilities/FormatParser.cpp Utilities/FormatParser.h<o:p></o:p></p><p class=MsoNormal>Utilities/NativeArguments.cpp Utilities/NativeArguments.h<o:p></o:p></p><p class=MsoNormal>Utilities/StringUtilitiesTuples.h<o:p></o:p></p><p class=MsoNormal>Utilities/BoundingBox.cpp Utilities/BoundingBox.h<o:p></o:p></p><p class=MsoNormal>Utilities/ICoordinateTransform.cpp Utilities/ICoordinateTransform.h<o:p></o:p></p><p class=MsoNormal>Utilities/CoordinateSpaceException.h<o:p></o:p></p><p class=MsoNormal>Utilities/CoordinateTransformMatrix.cpp Utilities/CoordinateTransformMatrix.h<o:p></o:p></p><p class=MsoNormal>Utilities/ILockTracker.h<o:p></o:p></p><p class=MsoNormal>Utilities/LockTracker.cpp Utilities/LockTracker.h<o:p></o:p></p><p class=MsoNormal>Utilities/Locks.cpp Utilities/Locks.h<o:p></o:p></p><p class=MsoNormal>Utilities/LoggingStuff.cpp Utilities/LoggingStuff.h<o:p></o:p></p><p class=MsoNormal>Utilities/ChamberDist.cpp Utilities/ChamberDist.h<o:p></o:p></p><p class=MsoNormal>Utilities/SurfaceData.cpp Utilities/SurfaceData.h<o:p></o:p></p><p class=MsoNormal>Utilities/SurfaceUtils.cpp Utilities/SurfaceUtils.h Utilities/KDTree.h<o:p></o:p></p><p class=MsoNormal>Utilities/Utilities.cpp Utilities/Utilities.h<o:p></o:p></p><p class=MsoNormal>Utilities/MathUtilities.cpp Utilities/MathUtilities.h<o:p></o:p></p><p class=MsoNormal>Utilities/StringUtilities.cpp Utilities/StringUtilities.h<o:p></o:p></p><p class=MsoNormal>Utilities/FileUtilities.cpp Utilities/FileUtilities.h<o:p></o:p></p><p class=MsoNormal>Utilities/Exception.h<o:p></o:p></p><p class=MsoNormal>Utilities/<o:p></o:p></p><p class=MsoNormal>Utilities/IFunctionR1.h<o:p></o:p></p><p class=MsoNormal>Utilities/IFunctionR2.h<o:p></o:p></p><p class=MsoNormal>Utilities/IFunctionR3.h<o:p></o:p></p><p class=MsoNormal>Utilities/Interpolation.cpp Utilities/Interpolation.h<o:p></o:p></p><p class=MsoNormal>Utilities/InterpolationR2.cpp Utilities/InterpolationR2.h<o:p></o:p></p><p class=MsoNormal>Utilities/InterpolationR3.cpp Utilities/InterpolationR3.h<o:p></o:p></p><p class=MsoNormal>Utilities/NaturalSplineInterpolation.cpp Utilities/NaturalSplineInterpolation.h<o:p></o:p></p><p class=MsoNormal>Utilities/KBSplineInterpolation.cpp Utilities/KBSplineInterpolation.h<o:p></o:p></p><p class=MsoNormal>Utilities/LinearSplineInterpolation.cpp Utilities/LinearSplineInterpolation.h<o:p></o:p></p><p class=MsoNormal>Utilities/Constant.cpp Utilities/Constant.h<o:p></o:p></p><p class=MsoNormal>Utilities/IParametricFunction.h<o:p></o:p></p><p class=MsoNormal>Utilities/PointAtDistance.cpp Utilities/PointAtDistance.h<o:p></o:p></p><p class=MsoNormal>Utilities/xml/XmlDocument.cpp Utilities/xml/XmlDocument.h<o:p></o:p></p><p class=MsoNormal>Utilities/xml/XmlAttribute.cpp Utilities/xml/XmlAttribute.h<o:p></o:p></p><p class=MsoNormal>Utilities/xml/XmlException.cpp Utilities/xml/XmlException.h<o:p></o:p></p><p class=MsoNormal>Utilities/xml/XmlNode.cpp Utilities/xml/XmlNode.h<o:p></o:p></p><p class=MsoNormal>Utilities/xml/XmlReader.cpp Utilities/xml/XmlReader.h<o:p></o:p></p><p class=MsoNormal>Utilities/xml/XmlWriter.cpp Utilities/xml/XmlWriter.h<o:p></o:p></p><p class=MsoNormal>Utilities/xml/XmlUtilities.cpp Utilities/xml/XmlUtilities.h<o:p></o:p></p><p class=MsoNormal>)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>SET( vtkPatheter_SRCS <o:p></o:p></p><p class=MsoNormal> MainFrm.cpp MainFrm.h<o:p></o:p></p><p class=MsoNormal>StdAfx.cpp StdAfx.h<o:p></o:p></p><p class=MsoNormal>vtkSDI.cpp vtkSDI.h<o:p></o:p></p><p class=MsoNormal>vtkSDI.rc<o:p></o:p></p><p class=MsoNormal>randomIns.h<o:p></o:p></p><p class=MsoNormal>vtkSDIDoc.cpp vtkSDIDoc.h<o:p></o:p></p><p class=MsoNormal>vtkSDIView.cpp vtkSDIView.h<o:p></o:p></p><p class=MsoNormal>vtkPointGrouper.cpp vtkPointGrouper.h<o:p></o:p></p><p class=MsoNormal>vtkPointGroupVisibilities.cpp vtkPointGroupVisibilities.h<o:p></o:p></p><p class=MsoNormal>PatheterInteractor.cpp PatheterInteractor.h<o:p></o:p></p><p class=MsoNormal>AblationListCtrl.cpp AblationListCtrl.h<o:p></o:p></p><p class=MsoNormal>AblationRangeDialog.cpp AblationRangeDialog.h<o:p></o:p></p><p class=MsoNormal>AblationStats.h AblationStats.cpp<o:p></o:p></p><p class=MsoNormal>AutoDataReader.cpp AutoDataReader.h<o:p></o:p></p><p class=MsoNormal>AutoDataProcessor.cpp AutoDataProcessor.h<o:p></o:p></p><p class=MsoNormal>AutoDataWriter.cpp AutoDataWriter.h<o:p></o:p></p><p class=MsoNormal>ClassifyDialog.cpp ClassifyDialog.h<o:p></o:p></p><p class=MsoNormal>TriangleParticulator.cpp TriangleParticulator.h<o:p></o:p></p><p class=MsoNormal>SmoothingDlg.cpp SmoothingDlg.h<o:p></o:p></p><p class=MsoNormal>BoxFilterDialog.cpp BoxFilterDialog.h<o:p></o:p></p><p class=MsoNormal>FilterDialog.cpp FilterDialog.h<o:p></o:p></p><p class=MsoNormal>TargetAttempt.h<o:p></o:p></p><p class=MsoNormal>TargetFilterDialog.cpp TargetFilterDialog.h<o:p></o:p></p><p class=MsoNormal>ContactClassificationDlg.h ContactClassificationDlg.cpp<o:p></o:p></p><p class=MsoNormal>PieChartWnd.cpp PieChartWnd.h<o:p></o:p></p><p class=MsoNormal>CartoMapInfo.h CartoMapInfo.cpp<o:p></o:p></p><p class=MsoNormal>resource.h<o:p></o:p></p><p class=MsoNormal>res/particulator.bmp<o:p></o:p></p><p class=MsoNormal>res/vtkSDI.ico<o:p></o:p></p><p class=MsoNormal>res/vtkSDI.rc2<o:p></o:p></p><p class=MsoNormal>res/vtkSDIDoc.ico<o:p></o:p></p><p class=MsoNormal>res/Toolbar.bmp<o:p></o:p></p><p class=MsoNormal>${POINT_GROUP_FILES}<o:p></o:p></p><p class=MsoNormal>${FACTORY_FILES}<o:p></o:p></p><p class=MsoNormal>${MEMENTO_FILES}<o:p></o:p></p><p class=MsoNormal>${UTILITY_FILES}<o:p></o:p></p><p class=MsoNormal>VirtualCatheter/DeviceManager.cpp VirtualCatheter/DeviceManager.h<o:p></o:p></p><p class=MsoNormal>VirtualCatheter/DeviceSelection.cpp VirtualCatheter/DeviceSelection.h<o:p></o:p></p><p class=MsoNormal>VirtualCatheter/CatheterProperties.cpp VirtualCatheter/CatheterProperties.h VirtualCatheter/CatheterSegmentInfo.h<o:p></o:p></p><p class=MsoNormal>VirtualCatheter/VirtualCatheter.cpp VirtualCatheter/VirtualCatheter.h<o:p></o:p></p><p class=MsoNormal>VirtualCatheter/BaseData.cpp VirtualCatheter/BaseData.h<o:p></o:p></p><p class=MsoNormal>VirtualCatheter/VirtualCatheterException.cpp VirtualCatheter/VirtualCatheterException.h<o:p></o:p></p><p class=MsoNormal>AutoDataSample40/AutoDataSample.cpp AutoDataSample40/AutoDataSample.h<o:p></o:p></p><p class=MsoNormal>AutoDataSample40/CasStatusInfo.h AutoDataSample40/MagnetData.h AutoDataSample40/MappingGated.h <o:p></o:p></p><p class=MsoNormal> AutoDataSample40/RealtimeCatheterData.h AutoDataSample40/MappingNonGated.h AutoDataSample40/Timestamp.h<o:p></o:p></p><p class=MsoNormal>) <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>LINK_LIBRARIES( <o:p></o:p></p><p class=MsoNormal>  vtkRendering<o:p></o:p></p><p class=MsoNormal>  vtkGraphics<o:p></o:p></p><p class=MsoNormal>  vtkImaging<o:p></o:p></p><p class=MsoNormal>  vtkIO<o:p></o:p></p><p class=MsoNormal>  vtkFiltering<o:p></o:p></p><p class=MsoNormal>  vtkCommon<o:p></o:p></p><p class=MsoNormal>  vtkHybrid<o:p></o:p></p><p class=MsoNormal>  vtkWidgets<o:p></o:p></p><p class=MsoNormal>  Gdiplus.lib<o:p></o:p></p><p class=MsoNormal>  Dbghelp.lib<o:p></o:p></p><p class=MsoNormal>)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># add stuff to use MFC in this executable<o:p></o:p></p><p class=MsoNormal>ADD_DEFINITIONS(-D_AFXDLL)<o:p></o:p></p><p class=MsoNormal>SET(CMAKE_MFC_FLAG 6)<o:p></o:p></p><p class=MsoNormal>SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp")<o:p></o:p></p><p class=MsoNormal># This line eliminates Visual Studio from constant rebuilding ZERO_CHECK<o:p></o:p></p><p class=MsoNormal>SET(CMAKE_SUPPRESS_REGENERATION 1)<o:p></o:p></p><p class=MsoNormal>ADD_EXECUTABLE(vtkPatheter WIN32 ${vtkPatheter_SRCS} ${GAWK_BINS} ${GAWK_SCRIPTS})<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>