Opened 6 years ago

Closed 6 years ago

#575 closed defect (wontfix)

CMake Compile: Assignment operator could not be generated

Reported by: RMWChaos Owned by: mloskot
Priority: minor Milestone: 3.4.0
Component: Build/Install (cmake) Version: master
Severity: Unassigned Keywords: Cmake Warning Geometry Noder
Cc:

Description

Not sure what the impact of these warnings are, as the build fails immediately afterwards while linking geos_c.dll; so I cannot test the results of the build. However, I don't believe this issue is related to the build failing with unresolved externals.

Following the instructions on http://trac.osgeo.org/geos/wiki/BuildingOnWindowsWithCMake; Running in SDK 7.0 x64 (MSVC 2008).

  1. Downloaded svn_trunk
  1. geos\src\util\triangulate directory is missing from svn_trunk; so have to either copy it from a nightly snapshot, or apply the entire snapshot over the svn_trunk. I've tried both methods and run into the same warnings below. In this specific case, I was using geos-20120727.tar.bz2.
  1. Ran c:\temp\geos\build> cmake -G "NMake Makefiles" c:\temp\geos

CMake completes successfully with no warnings or errors.

  1. Ran c:\temp\geos\build> nmake /f makefile MSVC_VER=1500

Receive the following warnings at 83% just before linking geos_c.dll

[ 83%] Built target geos-static
[ 83%] Building CXX object capi/CMakeFiles/geos_c.dir/geos_c.cpp.obj
geos_c.cpp
[ 83%] Building CXX object capi/CMakeFiles/geos_c.dir/geos_ts_c.cpp.obj
geos_ts_c.cpp
C:\Temp\libgeos_CMake\include\geos/noding/GeometryNoder.h(54) : warning C425
1: 'geos::noding::GeometryNoder::lineList' : class 'std::vector<_Ty>' needs
to have dll-interface to be used by clients of class 'geos::noding::Geometry
Noder'
        with
        [
            _Ty=geos::noding::SegmentString *
        ]
C:\Temp\libgeos_CMake\include\geos/noding/GeometryNoder.h(61) : warning C425
1: 'geos::noding::GeometryNoder::noder' : class 'std::auto_ptr<_Ty>' needs t
o have dll-interface to be used by clients of class 'geos::noding::GeometryN
oder'
        with
        [
            _Ty=geos::noding::Noder
        ]
C:\Temp\libgeos_CMake\include\geos/noding/GeometryNoder.h(65) : warning C451
2: 'geos::noding::GeometryNoder' : assignment operator could not be generate
d
        C:\Temp\libgeos_CMake\include\geos/noding/GeometryNoder.h(41) : see
declaration of 'geos::noding::GeometryNoder'
C:\Temp\libgeos_CMake\include\geos/operation/buffer/OffsetSegmentString.h(17
4) : warning C4267: 'return' : conversion from 'size_t' to 'int', possible l
oss of data
c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\memory(721) :
warning C4150: deletion of pointer to incomplete type 'geos::noding::Noder';
 no destructor called
        C:\Temp\libgeos_CMake\include\geos/noding/GeometryNoder.h(33) : see
declaration of 'geos::noding::Noder'
        c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\memory
(720) : while compiling class template member function 'std::auto_ptr<_Ty>::
~auto_ptr(void)'
        with
        [
            _Ty=geos::noding::Noder
        ]
        C:\Temp\libgeos_CMake\include\geos/noding/GeometryNoder.h(61) : see
reference to class template instantiation 'std::auto_ptr<_Ty>' being compile
d
        with
        [
            _Ty=geos::noding::Noder
        ]
Linking CXX shared library ..\bin\geos_c.dll

Change History (6)

comment:1 Changed 6 years ago by RMWChaos

Correction: geos/src/triangulate missing (not geos/src/util/triangulate)

comment:2 Changed 6 years ago by RMWChaos

Similar error occurs with straight NMake build (no CMake component)...

    cl  /nologo /MD /GR /O2 /W3 /EHs /D "NDEBUG" /D "NOMINMAX" /D "WIN32
_LEAN_AND_MEAN" /D "NOGDI" /D "GEOS_DLL_EXPORT" /D "_CRT_SECURE_NO_DEPRECATE
" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_SCL_SECURE_NO_DEPRECATE" -I..\include
-I..\capi /c noding\GeometryNoder.cpp /Fonoding\GeometryNoder.obj
GeometryNoder.cpp
..\include\geos/noding/GeometryNoder.h(54) : warning C4251: 'geos::noding::G
eometryNoder::lineList' : class 'std::vector<_Ty>' needs to have dll-interfa
ce to be used by clients of class 'geos::noding::GeometryNoder'
        with
        [
            _Ty=geos::noding::SegmentString *
        ]
..\include\geos/noding/GeometryNoder.h(61) : warning C4251: 'geos::noding::G
eometryNoder::noder' : class 'std::auto_ptr<_Ty>' needs to have dll-interfac
e to be used by clients of class 'geos::noding::GeometryNoder'
        with
        [
            _Ty=geos::noding::Noder
        ]
noding\GeometryNoder.cpp(98) : warning C4267: 'initializing' : conversion fr
om 'size_t' to 'unsigned int', possible loss of data
noding\GeometryNoder.cpp(140) : warning C4267: 'initializing' : conversion f
rom 'size_t' to 'unsigned int', possible loss of data

comment:3 Changed 6 years ago by RMWChaos

Missed this in the output previously, but building a couple files in the /src/triangulate directory give the same warnings. Are these even of any concern, or is this another case of Microsoft complaining about things that don't fit into The World According to Billy Bass Gates?

        cl  /nologo /MD /GR /O2 /W3 /EHs /D "NDEBUG" /D "NOMINMAX" /D "WIN32
_LEAN_AND_MEAN" /D "NOGDI" /D "GEOS_DLL_EXPORT" /D "_CRT_SECURE_NO_DEPRECATE
" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_SCL_SECURE_NO_DEPRECATE" -I..\include
-I..\capi /c triangulate\DelaunayTriangulationBuilder.cpp /Fotriangulate\Del
aunayTriangulationBuilder.obj
DelaunayTriangulationBuilder.cpp
..\include\geos/triangulate/quadedge/QuadEdgeSubdivision.h(93) : warning C42
51: 'geos::triangulate::quadedge::QuadEdgeSubdivision::quadEdges' : class 's
td::list<_Ty>' needs to have dll-interface to be used by clients of class 'g
eos::triangulate::quadedge::QuadEdgeSubdivision'
        with
        [
            _Ty=geos::triangulate::quadedge::QuadEdge *
        ]
..\include\geos/triangulate/quadedge/QuadEdgeSubdivision.h(94) : warning C42
51: 'geos::triangulate::quadedge::QuadEdgeSubdivision::removedEdges' : class
 'std::list<_Ty>' needs to have dll-interface to be used by clients of class
 'geos::triangulate::quadedge::QuadEdgeSubdivision'
        with
        [
            _Ty=geos::triangulate::quadedge::QuadEdge *
        ]
..\include\geos/triangulate/quadedge/QuadEdgeSubdivision.h(100) : warning C4
251: 'geos::triangulate::quadedge::QuadEdgeSubdivision::locator' : class 'st
d::auto_ptr<_Ty>' needs to have dll-interface to be used by clients of class
 'geos::triangulate::quadedge::QuadEdgeSubdivision'
        with
        [
            _Ty=geos::triangulate::quadedge::QuadEdgeLocator
        ]
        cl  /nologo /MD /GR /O2 /W3 /EHs /D "NDEBUG" /D "NOMINMAX" /D "WIN32
_LEAN_AND_MEAN" /D "NOGDI" /D "GEOS_DLL_EXPORT" /D "_CRT_SECURE_NO_DEPRECATE
" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_SCL_SECURE_NO_DEPRECATE" -I..\include
-I..\capi /c triangulate\IncrementalDelaunayTriangulator.cpp /Fotriangulate\
IncrementalDelaunayTriangulator.obj
IncrementalDelaunayTriangulator.cpp
..\include\geos/triangulate/quadedge/QuadEdgeSubdivision.h(93) : warning C42
51: 'geos::triangulate::quadedge::QuadEdgeSubdivision::quadEdges' : class 's
td::list<_Ty>' needs to have dll-interface to be used by clients of class 'g
eos::triangulate::quadedge::QuadEdgeSubdivision'
        with
        [
            _Ty=geos::triangulate::quadedge::QuadEdge *
        ]
..\include\geos/triangulate/quadedge/QuadEdgeSubdivision.h(94) : warning C42
51: 'geos::triangulate::quadedge::QuadEdgeSubdivision::removedEdges' : class
 'std::list<_Ty>' needs to have dll-interface to be used by clients of class
 'geos::triangulate::quadedge::QuadEdgeSubdivision'
        with
        [
            _Ty=geos::triangulate::quadedge::QuadEdge *
        ]
..\include\geos/triangulate/quadedge/QuadEdgeSubdivision.h(100) : warning C4
251: 'geos::triangulate::quadedge::QuadEdgeSubdivision::locator' : class 'st
d::auto_ptr<_Ty>' needs to have dll-interface to be used by clients of class
 'geos::triangulate::quadedge::QuadEdgeSubdivision'
        with
        [
            _Ty=geos::triangulate::quadedge::QuadEdgeLocator
        ]

comment:4 Changed 6 years ago by RMWChaos

And here are some more at about 79%...

GeometryPrecisionReducer.cpp
C:\Temp\libgeos_cmake\include\geos/precision/GeometryPrecisionReducer.h(154)
 : warning C4512: 'geos::precision::GeometryPrecisionReducer' : assignment operator could not be generated
        C:\Temp\libgeos_cmake\include\geos/precision/GeometryPrecisionReduce
r.h(42) : see declaration of 'geos::precision::GeometryPrecisionReducer'
C:\Temp\libgeos_cmake\include\geos/precision/PrecisionReducerCoordinateOperation.h(60) : warning C4512: 'geos::precision::PrecisionReducerCoordinateOperation' : assignment operator could not be generated
        C:\Temp\libgeos_cmake\include\geos/precision/PrecisionReducerCoordin
ateOperation.h(36) : see declaration of 'geos::precision::PrecisionReducerCoordinateOperation'
[ 79%] Building CXX object src/CMakeFiles/geos-static.dir/precision/Precisio
nReducerCoordinateOperation.cpp.obj
PrecisionReducerCoordinateOperation.cpp
C:\Temp\libgeos_cmake\include\geos/precision/PrecisionReducerCoordinateOpera
tion.h(60) : warning C4512: 'geos::precision::PrecisionReducerCoordinateOper
ation' : assignment operator could not be generated
        C:\Temp\libgeos_cmake\include\geos/precision/PrecisionReducerCoordin
ateOperation.h(36) : see declaration of 'geos::precision::PrecisionReducerCo
ordinateOperation'
C:\Temp\libgeos_cmake\src\precision\PrecisionReducerCoordinateOperation.cpp(
40) : warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned
int', possible loss of data
[ 79%] Building CXX object src/CMakeFiles/geos-static.dir/precision/SimpleGe
ometryPrecisionReducer.cpp.obj
SimpleGeometryPrecisionReducer.cpp
C:\Temp\libgeos_cmake\src\precision\SimpleGeometryPrecisionReducer.cpp(73) :
 warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int',
 possible loss of data

comment:5 Changed 6 years ago by strk

Milestone: 3.3.53.4.0

comment:6 Changed 6 years ago by mloskot

Resolution: wontfix
Status: newclosed

Quoting strk from #576:

The official build system is the automake one. Please only file tickets against cmake if willing to provide a patch (sorry).

Note: See TracTickets for help on using tickets.